如何在Android Edittext上以编程方式设置drawableRight?

时间:2014-03-10 10:03:41

标签: android drawable

我知道在XML中设置drawableRight。但我需要以编程方式进行,因为它是根据某些条件进行的更改。

9 个答案:

答案 0 :(得分:193)

您可以使用以下功能:

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

与可绘制位置对应的参数的顺序为:left,top,right,bottom

答案 1 :(得分:6)

进一步查找here

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");

答案 2 :(得分: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);

答案 3 :(得分:2)

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

解释here

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

将Drawables(如果有)设置为显示在文本的左侧,上方,右侧和下方。如果你不想在那里使用Drawable,请使用0。 Drawables的界限将设置为其内在界限。

答案 4 :(得分:2)

尝试:

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

然后,您可以为特定的drawable添加触摸侦听器。

答案 5 :(得分:1)

您可以使用函数setCompoundDrawablesWithIntrinsicBounds()内置的editText视图(此处为txview)来执行您要查找的内容

在我的代码中我像这样使用它。 txview.setCompoundDrawablesWithIntrinsicBounds(0,0,R.drawable.ic_arrow_drop_up,0);

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

答案 6 :(得分: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);

答案 7 :(得分:0)

为了同时改变左右两者,我使用这一行。

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

答案 8 :(得分:0)

如果需要可绘制的android图形,则可以使用

Drawable dw = getApplicationContext().getResources().getDrawable(R.drawable.edit);
Button start = (Button)findViewById(R.id.buttonStart);
start.setCompoundDrawablesWithIntrinsicBounds(dw, null, null, null);