我知道在XML中设置drawableRight。但我需要以编程方式执行此操作,因为它会根据某些条件进行更改。
我知道在XML中设置drawableRight。但我需要以编程方式执行此操作,因为它会根据某些条件进行更改。
Answers:
您可以使用以下功能:
editText.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.drawableRight, 0);
或(如果您想传递可绘制对象本身而不是其ID)
editText.setCompoundDrawablesWithIntrinsicBounds(null, null, ContextCompat.getDrawable(context,R.drawable.drawableRight), null)
与可绘制位置相对应的参数顺序为:左,上,右,下
在这里找到更多
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)
将Drawables(如果有)设置为显示在文本的左侧,上方,右侧和下方。如果您不希望在此处使用Drawable,请使用0。Drawables的边界将设置为其固有边界。
您可以使用内置在函数setCompoundDrawablesWithIntrinsicBounds()中的editText视图(这里是txview)来执行您要查找的操作
在我的代码中,我像这样使用它。txview.setCompoundDrawablesWithIntrinsicBounds(0,0,R.drawable.ic_arrow_drop_up,0);
txview.setCompoundDrawablesWithIntrinsicBounds(left,top,right,bottom);
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);