Android EdittextでdrawableRightをプログラムで設定するにはどうすればよいですか?


85

XMLでのdrawableRightの設定について知っています。しかし、条件によって変更されるため、プログラムで行う必要がありました。


9
EditTextにはsetCompoundDrawablesWithIntrinsicBounds()を使用します
Piyush 2014年

回答:


258

以下の機能を使用できます。

editText.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.drawableRight, 0);

または(IDの代わりにドローアブル自体を渡したい場合)

editText.setCompoundDrawablesWithIntrinsicBounds(null, null, ContextCompat.getDrawable(context,R.drawable.drawableRight), null)

ドローアブルの場所に対応するパラメータの順序は、左、上、右、下です。


1
そのドローアブルにIDを割り当てるにはどうすればよいですか?基本的に私はその特定のドローアブルにタッチリスナーを追加したい
Thorvald Olavsen 2016

@Lawrence Choyこんにちは、画像を確認する方法はすでに終了しているかどうかです。この場合は、画像の色を変更する方法を教えてください。
Gowthaman M 2017

8

ここでさらに見つける

EditText myEdit = (EditText) findViewById(R.id.myEdit);
myEdit.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.icon, 0);  
// where params are (left,top,right,bottom)

プログラムでドローアブルパディングを設定することもできます。

myEdit.setCompoundDrawablePadding("Padding value");

こんにちは、画像を確認する方法はすでに終了しているかどうかです。この場合は私を助けてください、そして画像の色を変更する方法
Gowthaman M 2017

4

以下のようにしてみてください:

Drawable img = getContext().getResources().getDrawable( R.drawable.smiley );
EdtText.setCompoundDrawablesWithIntrinsicBounds( 0, 0, img, 0);

編集:

 int img = R.drawable.smiley;
 EdtText.setCompoundDrawablesWithIntrinsicBounds( 0, 0, img, 0);

4

試してみてください:

EditText editFirstname = (EditText) findViewById(R.id.edit_fname);
Drawable icUser = getResources().getDrawable(R.drawable.ic_user);
editFirstname.setCompoundDrawablesWithIntrinsicBounds(null, null, icUser, null);

次に、その特定のドローアブルにタッチリスナーを追加できます。


2
int img = R.drawable.smiley;
editText.setCompoundDrawables( null, null, img, null );

ここで説明します

setCompoundDrawablesWithIntrinsicBounds (int left, int top, int right, int bottom)

Drawable(存在する場合)をテキストの左、上、右、下に表示するように設定します。そこにDrawableが必要ない場合は、0を使用します。Drawablesの境界は、固有の境界に設定されます。


2

左右両方を同時に変更するために、この1行を使用します。

download.setCompoundDrawablesWithIntrinsicBounds( R.drawable.ic_lock_open_white_24dp, 0, R.drawable.ic_lock_open_white_24dp, 0);

1

関数setCompoundDrawablesWithIntrinsicBounds()に組み込まれているeditTextビュー(ここではtxview)を使用して、探していることを実行できます。

私のコードでは、このように使用しました。txview.setCompoundDrawablesWithIntrinsicBounds(0,0、R.drawable.ic_arrow_drop_up、0);

txview.setCompoundDrawablesWithIntrinsicBounds(left,top,right,bottom);

1
OPがなぜ彼の質問に答えるのかを助けるために、コードを説明する必要があります。
Markus 2017

0
        et_feedback.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {

                }
              et_feedback.setCompoundDrawablesWithIntrinsicBounds(0,R.mipmap.feedback_new, 0, 0);                
               et_feedback.setTextColor(Color.BLACK);

            }
        });

これを使用してDrawableを非表示にします

et_feedback.setCompoundDrawablesWithIntrinsicBounds(0,0, 0, 0);

0

それがドローアブルなAndroidグラフィックを必要とする場合、これは機能します

Drawable dw = getApplicationContext().getResources().getDrawable(R.drawable.edit);
Button start = (Button)findViewById(R.id.buttonStart);
start.setCompoundDrawablesWithIntrinsicBounds(dw, null, null, null);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.