Как удалить drawableleft
У меня есть кнопка и текстовое представление, текстовый вид имеет drawable-left.
После того, как вы нажмете на кнопку, нужно удалить drawable-left, а обычный текст должен быть установлен в Text-view, но я не знаю, как удалить drawable-left из кода.
Спасибо заранее.
Ответы
Ответ 1
Атрибут drawableLeft
(или любой из аналогичных атрибутов) XML может быть изменен (удалив drawable
в вашем случае) с помощью кода, используя что-то вроде этого:
yourTextView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
yourTextView.setText("The Text You Need In There");
Конструктор метода находится в следующем порядке:
setCompoundDrawablesWithIntrinsicBounds (int left, int top, int right, int bottom)
Подробнее о методе setCompoundDrawablesWithIntrinsicBounds здесь
Ответ 2
Мы можем установить Drawables (если таковые имеются), чтобы они появлялись слева, над, справа и под текстом.
Используйте 0 или ноль, если вы не хотите рисовать там.
textView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
Границы Drawables будут установлены на их внутренние границы.
Вызов этого метода перезапишет любые Drawables, ранее установленные с помощью {@link #setCompoundDrawablesRelative}
или связанных методов.
И если мы хотим установить Drawables, то мы можем использовать:
textView.setCompoundDrawablesWithIntrinsicBounds( R.drawable.smiley, 0, 0, 0);
Ответ 3
Версии TextView
могут быть установлены программно с помощью метода setCompoundDrawables.
Итак, вы можете попробовать следующее:
textView.setCompoundDrawables(null, null, null, null);
или
textView.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
Ответ 4
Нижеследующая строка отлично работает,
yourTextView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
Этот ответ должен уведомить об одном вопросе, с которым я столкнулся с типичным сценарием,
Если вы указали видимость yourTextView в xml
тогда напишите эту строку: "yourTextView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);" после
делая видимость вашего текста видимым, иначе он не будет работать.
yourTextView.setVisibility(View.VISIBLE):
yourTextView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
Надеюсь, это поможет кому-то, следующему этому типичному потоку.
Ответ 5
Установить все позиции в нуле. Ваш объект Drawable удален
Работа с использованием этого метода setOnFocusChangeListener
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);
}
});
Ответ 6
Как это сделать и применить к любому из четырех элементов рисования с помощью 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
)}