2016-08-18 89 views
0

我希望在EditText视图的背景中有一丝灰色,就像文本不断突出显示的一样,我需要以编程方式添加。我试过setBackground(),setBackgroundTintList(),setBackgroundTintMode(),但是他们似乎没有一个能够工作。以编程方式将背景色调设置为EditText视图

这里是代码...

EditText label = new EditText(this); 
    label.setTextSize(4*dp); 
    label.setTypeface(null,Typeface.BOLD_ITALIC); 
    RelativeLayout.LayoutParams labelParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
    labelParams.setMargins(80,0,0,0); 
    labelParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE); 
    labelParams.addRule(RelativeLayout.CENTER_VERTICAL, RelativeLayout.TRUE); 
    label.setLayoutParams(labelParams); 
    rootView.addView(label); 

enter image description here

回答

6

让我们试试这个:

editText.getBackground().setColorFilter(getResources().getColor(R.color.your_color), PorterDuff.Mode.SRC_ATOP); 
+0

不工作,但谢谢你的建议 –

+0

它的工作谢谢你 – jyomin

0

文本的亮点将不会出现,除非用户长按选择 - 所有!

所以这是一个twofer:

setHighlightColor(Color.RED)会给你想要的高亮颜色,只有当你选择,所有

所以你必须setSelection(0, length)您键入

使用TextWatcher到自动 - 请键入以下内容为您选择:

et.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      et.setSelection(0, s.length()); 
     } 
    }); 

但要小心,因为文本是“选中”的,所以“删除te“会将其擦除,并且键入的文本可能会被意外更换

您必须在TextWatcher中微妙地覆盖一些此默认行为。请与它一起玩,你会发现一些有趣的行为!

相关问题