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


85

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


9
setCompoundDrawablesWithIntrinsicBounds()用于EditText。
Piyush 2014年

Answers:


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

@Lawrence Choy嗨,先生,如何检查图像是否已经退出。在这种情况下,请帮助我,以及如何更改图像颜色。
Gowthaman M

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

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)

将Drawables(如果有)设置为显示在文本的左侧,上方,右侧和下方。如果您不希望在此处使用Drawable,请使用0。Drawables的边界将设置为其固有边界。


2

为了一次更改左右两个,我使用了这一行。

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回答他的问题。
马库斯

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);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.