EditText,如何隐藏DrawableRight

3

我希望在我的文本区域中有一个DrawableRight图标,但当我开始输入时,它应该消失。所以我有一个EditText的代码和一个知道何时隐藏Drawable的函数,但我不知道如何调用该函数。你能帮我吗?

//XML CODE
<EditText
        android:id="@+id/textt"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_gravity="center_vertical"
        android:ems="10"
        android:paddingLeft="2dp"
        android:hint="Wpisz wiadomość"
        android:background="@android:color/transparent"
        android:maxLines="4" />

//JAVA CODE
public void camera(View v)
{
    EditText textArea=(EditText) findViewById(R.id.textt);
    if(textArea.getText()==null)
    {
        textArea.setCompoundDrawables(null, null, ContextCompat.getDrawable(this,R.drawable.ic_camera_alt_black_18dp), null);
    }
    else
        textArea.setCompoundDrawables(null,null,null,null);
}

解决方案: 我已经处理好了!首先,我将“this”更改为“MainActivity.this”。第二个非常重要——为可绘制对象设置边界!完成。

2个回答

2
你应该将TextWatcher实现到你的EditText中。
请看这里的一个例子here
onTextChanged方法中,你可以检查-如果CharSequence s长度大于0,则表示你已经输入了一些文本,并且应该隐藏可绘制对象。
CharSequence s是你在onTextChanged方法中接收到的参数。

快完成了。现在我在这段代码中遇到了关于参数“this”的问题:textArea.setCompoundDrawables(null, null, ContextCompat.getDrawable(this,R.drawable.ic_camera_alt_black_18dp), null); 错误的第一个参数类型。找到:'android.text.TextWatcher',需要:'android.content.Context'。 - Kuba Stonka
如果这段代码位于您的Activity(例如MainActivity)中,请将this替换为MainActivity.this。如果它位于片段中,请使用getActivity()。这是因为您的代码现在在TextWatcher内部,所以this现在指向TextWatcher - Goltsev Eugene

0

如果想要隐藏TextArea的drawable,可以尝试以下方法:

Drawable[] drawables = textArea.getCompoundDrawables();
for (Drawable d: drawables) {
    if (d != null) {
        d.setAlpha(0);
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接