如何删除drawableleft

时间:2013-07-11 11:52:58

标签: android user-interface

我有一个按钮和一个文本视图,文本视图有一个drawable-left。 单击按钮后,应删除drawable-left,并将纯文本设置为Text-view,但我不知道如何从代码中删除drawable-left。

提前致谢。

6 个答案:

答案 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)

详细了解方法setCompoundDrawablesWithIntrinsicBounds here

答案 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)

添加Kotlin扩展程序

如果您将经常这样做,则添加扩展名可以使您的代码更具可读性

fun TextView.clearDrawables() {
    this.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0)
}

要使用扩展程序,只需致电

view.clearDrawables()