我有一个按钮和一个文本视图,文本视图有一个drawable-left。 单击按钮后,应删除drawable-left,并将纯文本设置为Text-view,但我不知道如何从代码中删除drawable-left。
提前致谢。
答案 0 :(得分:77)
可以使用以下内容修改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)
答案 1 :(得分:15)
我们可以将 Drawables (如果有的话)设置为显示在上面的左侧 文本右侧和下方。
如果您不想在那里使用Drawable,请使用0或null。
textView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
The Drawables'边界将被设置为它们的内在边界。
调用此方法将覆盖先前使用的任何Drawables
{@link #setCompoundDrawablesRelative}
或相关方法。
如果我们想设置Drawables ,那么我们可以使用:
textView.setCompoundDrawablesWithIntrinsicBounds( R.drawable.smiley, 0, 0, 0);
答案 2 :(得分:8)
TextView
的drawable可以通过setCompoundDrawables方法以编程方式设置。
所以你可以试试这个:
textView.setCompoundDrawables(null, null, null, null);
或者
textView.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
答案 3 :(得分:0)
设置所有位置为零您的可绘制项目已删除
使用此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);
}
});
答案 4 :(得分:0)
如何执行此操作并将其应用于具有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
)}
答案 5 :(得分:0)
如果您将经常这样做,则添加扩展名可以使您的代码更具可读性
fun TextView.clearDrawables() {
this.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0)
}
要使用扩展程序,只需致电
view.clearDrawables()