2016-08-18 27 views
0

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

答えて

6

これを試してみましょう:

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

動作しませんが、おかげです。 –

+0

ありがとうございました – jyomin

0

テキストのハイライトは、SELECT - するユーザー長押ししない限り、表示されません。すべて!

ので、これはtwoferです:

setHighlightColor(Color.RED)は自動するTextWatcherを使用あなたは

を入力するように選択し、すべての

をので、あなたはsetSelection(0, length)に持っていた場合にのみ、あなたが望むハイライトカラーを与えます

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()); 
     } 
    }); 

をしかしテキストは、「選択」されているので、気をつけて、1「DELE:入力時にあなたのためにそれを選択しますテット "が拭き取られ、誤って入力されたテキストが置き換えられる可能性があります。

TextWatcherでこのデフォルトの動作の一部を微妙にオーバーライドする必要があります。それと遊んでください、あなたはいくつかの興味深い行動を発見するでしょう!

関連する問題