我希望在EditText
视图的背景中有一点灰色,几乎就像文本经常突出显示一样,我需要以编程方式添加它。我已经尝试了setBackground()
,setBackgroundTintList()
,setBackgroundTintMode()
,但其中没有一个似乎有效。
这是代码......
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);
答案 0 :(得分:9)
让我们试试这个:
editText.getBackground().setColorFilter(getResources().getColor(R.color.your_color), PorterDuff.Mode.SRC_ATOP);
答案 1 :(得分:0)
除非用户长按以选择所有内容,否则不会显示文字突出显示!
所以这是两个人:
只有当您选择所有时, 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());
}
});
但要小心,因为文本被选中",一个"删除"将擦除它并且也可能意外地替换打字文本
您必须在TextWatcher中巧妙地覆盖某些默认行为。请玩它,你会发现一些有趣的行为!