以编程方式将背景色调设置为EditText视图

时间:2016-08-18 14:52:09

标签: android android-layout android-studio

我希望在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);

enter image description here

2 个答案:

答案 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中巧妙地覆盖某些默认行为。请玩它,你会发现一些有趣的行为!