Android 如何在EditText提示中添加图标
我想在EditText提示中添加搜索图标。 实际上,我正在使用与SearchView相同的EditText,因为我想在EditText之间设置一个搜索图标,当用户在EditText中写入与提示文本相同的内容时,搜索图标将消失 请检查以下屏幕截图:Android 如何在EditText提示中添加图标,android,menu,android-edittext,searchview,hint,Android,Menu,Android Edittext,Searchview,Hint,我想在EditText提示中添加搜索图标。 实际上,我正在使用与SearchView相同的EditText,因为我想在EditText之间设置一个搜索图标,当用户在EditText中写入与提示文本相同的内容时,搜索图标将消失 请检查以下屏幕截图: 创建菜单: <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xml
创建菜单:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu_search_album"
android:icon="@drawable/ic_search"
android:title="@string/str_search_album"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="collapseActionView|always" />
</menu>
要了解更多信息,请阅读此
在Menifest.xml中
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
有关如何
在哈韦
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_photos_activity, menu);
final MenuItem item = menu.findItem(R.id.menu_search_photos);
final SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
searchView.setOnQueryTextListener(this);
return true;
}
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
List<MyAlbumItemPojo.DataFields> filteredModelList = filter(arrDataFields, newText);
if (filteredModelList.size() > 0) {
tvDataNotFoundAlbumItem.setVisibility(View.GONE);
return true;
} else {
tvDataNotFoundAlbumItem.setVisibility(View.VISIBLE);
tvDataNotFoundAlbumItem.setText(R.string.str_photo_not_fund);
return false;
}
}
private List<MyAlbumItemPojo.DataFields> filter(List<MyAlbumItemPojo.DataFields> models, String query) {
query = query.toLowerCase();
final List<MyAlbumItemPojo.DataFields> filteredModelList = new ArrayList<>();
for (MyAlbumItemPojo.DataFields model : models) {
final String text = model.getImagename().toLowerCase().toString();
if (text.contains(query)) {
filteredModelList.add(model);
}
}
if (!query.toString().toString().trim().equals("")){
adapter = new MyAlbumAdapter(MyAlbumsActivity.this, (ArrayList<MyAlbumItemPojo.DataFields>) filteredModelList,VisitUserID,VisitUser);
recyclerViewMyAlbums.setAdapter(adapter);
adapter.notifyDataSetChanged();
}else {
adapter = new MyAlbumAdapter(MyAlbumsActivity.this, arrDataFields,VisitUserID,VisitUser);
recyclerViewMyAlbums.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
return filteredModelList;
}
@覆盖
公共布尔onCreateOptions菜单(菜单){
getMenuInflater().充气(R.menu.menu\u照片\u活动,菜单);
最终菜单项=menu.findItem(R.id.menu\u搜索\u照片);
最终搜索视图SearchView=(SearchView)MenuItemCompat.getActionView(项);
setOnQueryTextListener(这个);
返回true;
}
@凌驾
公共布尔值onQueryTextSubmit(字符串查询){
返回false;
}
@凌驾
公共布尔onQueryTextChange(字符串newText){
List filteredModelList=filter(arrDataFields,newText);
如果(filteredModelList.size()>0){
tvDataNotFoundAlbumItem.setVisibility(View.GONE);
返回true;
}否则{
tvDataNotFoundAlbumItem.setVisibility(View.VISIBLE);
tvDataNotFoundAlbumItem.setText(R.string.str_photo_not_fund);
返回false;
}
}
私有列表筛选器(列表模型、字符串查询){
query=query.toLowerCase();
final List filteredModelList=new ArrayList();
对于(MyAlbumItemPojo.DataFields模型:模型){
最终字符串text=model.getImagename().toLowerCase().toString();
if(text.contains(查询)){
filteredModelList.add(model);
}
}
如果(!query.toString().toString().trim()等于(“”){
adapter=新的MyAlbumAdapter(MyAlbumsActivity.this,(ArrayList)FilteredModelist、VisitUserID、VisitUser);
RecycleServicewMyalBums.setAdapter(适配器);
adapter.notifyDataSetChanged();
}否则{
adapter=新的MyAlbumAdapter(MyAlbumsActivity.this、arrDataFields、VisitUserID、VisitUser);
RecycleServicewMyalBums.setAdapter(适配器);
adapter.notifyDataSetChanged();
}
返回filteredModelList;
}
将drawableLeft
设置为您的edittext
格式
android:drawableLeft="@drawable/fi_search"
当在editText
中键入某些文本时,隐藏它,当其中未输入任何内容时,可见
像
请使用Spannable字符串和ImageSpan在edittext中添加图标作为提示
ImageSpan imageHint = new ImageSpan(this, R.drawable.ic_search_accent_24dp);
String blankString = " ";
SpannableString spannableString = new SpannableString(blankString);
spannableString.setSpan(imageHint, 0, blankString.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
searchEdit.setHint(spannableString);
在xml中添加到编辑文本:
android:drwableLeft=“@dravable/imageSearch”
这会在EditText中放入一个图像,但在键入文本后图像仍然存在。
要使图像消失,只需在活动中覆盖:
@Override
public void afterTextChanged(Editable editable) {
if(editable.toString().length() > 0) {
searchEditText.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
} else {
searchEditText.setCompoundDrawablesWithIntrinsicBounds(R.drawable.image, 0, 0, 0);
}
}
这应该可以做到您可以在RelativeLayout中使用Edittext和ImageView,并在用户点击Edittext时隐藏图像
ImageSpan imageHint = new ImageSpan(this, R.drawable.ic_search_accent_24dp);
String blankString = " ";
SpannableString spannableString = new SpannableString(blankString);
spannableString.setSpan(imageHint, 0, blankString.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
searchEdit.setHint(spannableString);
@Override
public void afterTextChanged(Editable editable) {
if(editable.toString().length() > 0) {
searchEditText.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
} else {
searchEditText.setCompoundDrawablesWithIntrinsicBounds(R.drawable.image, 0, 0, 0);
}
}