Eu sei sobre definir drawableRight em XML. mas eu precisei fazê-lo programaticamente porque é alterado de acordo com alguma condição.
Eu sei sobre definir drawableRight em XML. mas eu precisei fazê-lo programaticamente porque é alterado de acordo com alguma condição.
Respostas:
Você pode usar a função abaixo:
editText.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.drawableRight, 0);
ou (se você deseja passar o próprio drawable em vez de seu ID)
editText.setCompoundDrawablesWithIntrinsicBounds(null, null, ContextCompat.getDrawable(context,R.drawable.drawableRight), null)
A ordem dos parâmetros correspondentes à localização do drawable é: esquerda, superior, direita, inferior
Encontre mais aqui
EditText myEdit = (EditText) findViewById(R.id.myEdit);
myEdit.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.icon, 0);
// where params are (left,top,right,bottom)
Você também pode definir o preenchimento de drawable de maneira programática:
myEdit.setCompoundDrawablePadding("Padding value");
Tente como abaixo:
Drawable img = getContext().getResources().getDrawable( R.drawable.smiley );
EdtText.setCompoundDrawablesWithIntrinsicBounds( 0, 0, img, 0);
Editar:
int img = R.drawable.smiley;
EdtText.setCompoundDrawablesWithIntrinsicBounds( 0, 0, img, 0);
Experimentar:
EditText editFirstname = (EditText) findViewById(R.id.edit_fname);
Drawable icUser = getResources().getDrawable(R.drawable.ic_user);
editFirstname.setCompoundDrawablesWithIntrinsicBounds(null, null, icUser, null);
Em seguida, você pode adicionar um ouvinte de toque a esse drawable específico.
int img = R.drawable.smiley;
editText.setCompoundDrawables( null, null, img, null );
Explicado aqui
setCompoundDrawablesWithIntrinsicBounds (int left, int top, int right, int bottom)
Define os Drawables (se houver) para aparecerem à esquerda, acima, à direita e abaixo do texto. Use 0 se você não quiser um Drawable lá. Os limites dos Drawables serão ajustados aos seus limites intrínsecos.
Você pode usar sua visualização editText (aqui é txview) incorporada à função setCompoundDrawablesWithIntrinsicBounds () para fazer o que você está procurando
no meu código eu usei assim. 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);
}
});
Ocultar Drawable usando isto
et_feedback.setCompoundDrawablesWithIntrinsicBounds(0,0, 0, 0);