更改背景颜色后EditText的边距丢失

3
我已经在水平方向的线性布局中创建了5个编辑文本,它们没有设置填充或边距。当我更改这些编辑文本的背景颜色时,边框就会消失。请帮忙解决如何确保我的编辑文本不会失去边框。以下是代码片段。
保存填充并重新分配没有起到帮助作用!
private void setToNonEditMode(EditText textBox, boolean nonEditMode){

        if(nonEditMode){
            textBox.setClickable(false);
            textBox.setBackgroundColor(getResources().getColor(R.color.transparent));
            textBox.setFocusable(false);
            textBox.setFocusableInTouchMode(false);
        }else{
            textBox.setClickable(true);
            textBox.setBackgroundColor(getResources().getColor(R.color.white));
            textBox.setFocusable(true);
            textBox.setFocusableInTouchMode(true);
        }
    }
1个回答

1

您尝试过将编辑文本定义为形状,然后再分配吗?我看到您是通过编程创建EditText的,但您可以尝试以下方法:

  1. 在您的res/drawable文件夹中创建一个xml形式的可绘制文件:

    <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
      <solid android:color="#ffffff" />
          <stroke android:width="1dip" android:color="#000000"/>
    </shape>
    
  2. 使用以下代码:

     textBox.setBackgroundResource(R.drawable.name_of_your_xml_shape_file);
    

不,我还没有通过编程方式创建我的Edit-text程序,你能否解释一下为什么会发生这种情况? - Adi
1
因为在你的XML中,你通过android:background为你的EditText分配了一个背景颜色,现在你不能再次使用它来设置边框颜色。我不是100%确定,但我认为这就是原因。所以你必须为此创建一个XML Drawable。然后你可以将EditText的背景设置为任何颜色,将EditText的“形状”的背景设置为<stroke> /border/。 - lapadets
好的,Idimitrov,我会尝试一下。谢谢你的帮助。 - Adi
它的工作原理稍微有些改变,因为它增加了黑色描边(我建议使用#AA000000颜色)。但它仍然不如原始样式好:色调和焦点仍然有问题。 - Defrag

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接