I have a button and a text-view, text-view has a drawable-left. After click on button the drawable-left should be removed and a plain text should be set to Text-view, but I
Set All Position is Zero Your Drawable item is remove
Its Working Using This setOnFocusChangeListener method
et_feedback.setCompoundDrawablesWithIntrinsicBounds(0,0, 0, 0);
et_feedback.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
//TODO using this Drawable icon remomve onclick
et_feedback.setCompoundDrawablesWithIntrinsicBounds(0,0, 0, 0);
et_feedback.setTextColor(Color.BLACK);
}
});
If you are going to be doing this frequently, adding an extension makes your code more readable
fun TextView.clearDrawables() {
this.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0)
}
To use the extension, simply call
view.clearDrawables()
We can sets the Drawables (if any) to appear to the left of, above, to the right of, and below the text.
Use 0 or null if you do not want a Drawable there.
textView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
The Drawables' bounds will be set to their intrinsic bounds.
Calling this method will overwrite any Drawables previously set using
{@link #setCompoundDrawablesRelative}
or related methods.
And if we wants to set Drawables then we can use :
textView.setCompoundDrawablesWithIntrinsicBounds( R.drawable.smiley, 0, 0, 0);
How to do this and apply to any of the four drawables with DataBinding
@BindingAdapter(value = [
"leftDrawable",
"topDrawable",
"rightDrawable",
"bottomDrawable"], requireAll = false)
fun setCompoundDrawables(textView: TextView,
@DrawableRes left: Int?,
@DrawableRes top: Int?,
@DrawableRes right: Int?,
@DrawableRes bottom: Int?) {
textView.setCompoundDrawablesWithIntrinsicBounds(
left ?: 0,
top ?: 0,
right ?: 0,
bottom ?: 0
)}
The drawables of a TextView
can be set programatically via the setCompoundDrawables method.
So you could try this:
textView.setCompoundDrawables(null, null, null, null);
Or
textView.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
The drawableLeft
(or any of the similar attributes) XML attribute can be modified (removing a drawable
in your case) via code using something like this:
yourTextView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
yourTextView.setText("The Text You Need In There");
The constructor for the method is in this order:
setCompoundDrawablesWithIntrinsicBounds (int left, int top, int right, int bottom)
Read more about the method setCompoundDrawablesWithIntrinsicBounds here