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

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

你可以使用下面的function:

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

对应于可绘制位置的参数的顺序是:左,上,右,下

在这里find更多

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

尝试如下:

 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); 
 int img = R.drawable.smiley; editText.setCompoundDrawables( null, null, img, null ); 

在这里解释

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

设置Drawable(如果有的话)显示在文本的左侧,上方,右侧和下方。 使用0,如果你不想在那里绘制。 Drawables的边界将被设置为它们的内在边界。

尝试:

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

然后你可以添加一个触摸监听器到特定的drawable。

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

你可以使用你的editText视图(这里是txview)内置的函数setCompoundDrawablesWithIntrinsicBounds()来做你正在寻找

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

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