Android 编辑文本交叉(X)按钮在为空时不消失
我在Android 编辑文本交叉(X)按钮在为空时不消失,android,android-edittext,android-button,Android,Android Edittext,Android Button,我在edittext中实现了一个交叉按钮。编辑文本实际上是一个搜索栏。此交叉按钮将清除用户输入的所有文本。 当搜索栏为空时,我希望十字按钮消失,当搜索栏为空时,十字按钮可见。 当我键入某个内容时,它变得可见,但当我清除所有内容时,它仍然可见。 有什么问题 这是我的密码: XML <EditText android:layout_width="wrap_content" android:id="@+id/searchbar" android:l
edittext
中实现了一个交叉按钮。编辑文本实际上是一个搜索栏。此交叉按钮将清除用户输入的所有文本。当搜索栏为空时,我希望十字按钮消失,当搜索栏为空时,十字按钮可见。 当我键入某个内容时,它变得可见,但当我清除所有内容时,它仍然可见。 有什么问题 这是我的密码: XML
<EditText
android:layout_width="wrap_content"
android:id="@+id/searchbar"
android:layout_height="40dp"
android:textColor="#bfc2d1"
android:singleLine="true"
android:drawableLeft="@drawable/search"
android:drawableRight="@drawable/deletebackground_nooverlay"
android:padding="5dp"
android:background="@drawable/search_bar"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:imeOptions="flagNoExtractUi"
android:hint="Search the elements"
android:layout_alignBottom="@+id/backdrawbtn"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/backdrawbtn"
android:layout_alignParentTop="true"
android:layout_marginTop="5dp"/>
<ImageView
android:id="@+id/clear_button"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginTop="7dp"
android:layout_marginRight="5dp"
android:visibility="invisible"
android:background="@drawable/ic_cancel"
android:layout_alignTop="@+id/searchbar"
android:layout_alignRight="@+id/searchbar" />
试着用另外的句子,而不是两个条件句。我试过了,但没有成功。它不起作用,这就是为什么我写了两条if语句。如果你有解决办法,请帮助我。
searchBar.addTextChangedListener(new TextWatcher() {
//I am using textwatcher as this editttext (searchBar) has a search function as will
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
String searchedquery = cs.toString().replaceAll(" ","");
CurlActivity.this.adapter.getFilter().filter(searchedquery);
if(!searchBar.getText().equals(""))
{
clearbutton.setVisibility(View.VISIBLE);
}
if(searchBar.getText().equals(""))
{
clearbutton.setVisibility(View.INVISIBLE);
}
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,int arg3) {
}
@Override
public void afterTextChanged(Editable s) {
}
});