任何人都可以帮助我吗?或者告诉我一些其他搜索组件,它们允许您在搜索时在搜索栏中添加图标?
修改
我有解决方案。它不是最专业的方式,但它是有效的。
在SearchView控件中,我放了两个图像,一个用于X来删除搜索到的文本(原始图标保留在摄像机后面),另一个用于摄像机(两个都不可见)。
layout / app_bar_home.xml :
<com.miguelcatalan.materialsearchview.MaterialSearchView
android:id="@+id/searchView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<ImageView android:id="@+id/imgClearSearch"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_gravity="right"
android:src="@drawable/ic_close_grease_small"
android:visibility="invisible"
android:layout_marginTop="18dp"
android:layout_marginRight="50dp" />
<ImageView
android:id="@+id/imgCamera"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="right"
android:src="@drawable/ic_menu_camera"
android:visibility="invisible"
android:layout_marginTop="14dp"
android:layout_marginRight="8dp"
/>
</com.miguelcatalan.materialsearchview.MaterialSearchView>
然后,在java类中,在监听器中,我们在显示搜索器时显示图像,并在隐藏搜索器时隐藏它们。
//Creamos los listeners de los buscadores
searchView = (MaterialSearchView) findViewById(R.id.searchView);
searchView.setVoiceSearch(false);
searchView.setOnQueryTextListener(new MaterialSearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
//Cuando pulsamos en buscar
String aa = "";
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
//Cuando teclemamos en el buscador
String aa = "";
if (newText.length() > 20)
searchView.setQuery(newText.substring(0, 20), false);
return false;
}
});
searchView.setOnSearchViewListener(new MaterialSearchView.SearchViewListener() {
@Override
public void onSearchViewShown() {
imgCamera.setVisibility(View.VISIBLE);
imgClearSearch.setVisibility(View.VISIBLE);
//ImageView searchClose = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
//searchClose.setImageResource(R.drawable.ic_close_white);
Drawable closeIcon = getResources().getDrawable(R.drawable.ic_close_white);
searchView.setCloseIcon(closeIcon);
//Cuando mostramos el buscador
String aa = "";
}
@Override
public void onSearchViewClosed() {
//Cuando cerramos el buscador (tras haber buscado)
String aa = "";
imgCamera.setVisibility(View.INVISIBLE);
imgClearSearch.setVisibility(View.INVISIBLE);
}
});
唯一的问题是,默认显示的用于清理搜索者文本的X仍在显示,所以我做了一个小技巧。我用默认的图标替换了默认出来的图标,因此不可见。我把它放在了一线:
Drawable closeIcon = getResources().getDrawable(R.drawable.ic_close_white);
searchView.setCloseIcon(closeIcon);
Este es el resultado:
答案 0 :(得分:0)
好的,该图标是ImageView,因此您可以使用:
searchView.findViewById(id)(ID必须进行逆向工程)
searchView.GetChildAt(您需要猜测的int位置); (位置应介于1-5之间)
答案 1 :(得分:0)
我有解决方案。它不是最专业的方式,但它是有效的。
在SearchView控件中,我放了两个图像,一个用于X来删除搜索到的文本(原始图标保留在摄像机后面),另一个用于摄像机(两个都不可见)。
layout / app_bar_home.xml :
<com.miguelcatalan.materialsearchview.MaterialSearchView
android:id="@+id/searchView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<ImageView android:id="@+id/imgClearSearch"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_gravity="right"
android:src="@drawable/ic_close_grease_small"
android:visibility="invisible"
android:layout_marginTop="18dp"
android:layout_marginRight="50dp" />
<ImageView
android:id="@+id/imgCamera"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="right"
android:src="@drawable/ic_menu_camera"
android:visibility="invisible"
android:layout_marginTop="14dp"
android:layout_marginRight="8dp"
/>
</com.miguelcatalan.materialsearchview.MaterialSearchView>
然后,在java类中,在监听器中,我们在显示搜索器时显示图像,并在隐藏搜索器时隐藏它们。
//Creamos los listeners de los buscadores
searchView = (MaterialSearchView) findViewById(R.id.searchView);
searchView.setVoiceSearch(false);
searchView.setOnQueryTextListener(new MaterialSearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
//Cuando pulsamos en buscar
String aa = "";
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
//Cuando teclemamos en el buscador
String aa = "";
if (newText.length() > 20)
searchView.setQuery(newText.substring(0, 20), false);
return false;
}
});
searchView.setOnSearchViewListener(new MaterialSearchView.SearchViewListener() {
@Override
public void onSearchViewShown() {
imgCamera.setVisibility(View.VISIBLE);
imgClearSearch.setVisibility(View.VISIBLE);
//ImageView searchClose = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
//searchClose.setImageResource(R.drawable.ic_close_white);
Drawable closeIcon = getResources().getDrawable(R.drawable.ic_close_white);
searchView.setCloseIcon(closeIcon);
//Cuando mostramos el buscador
String aa = "";
}
@Override
public void onSearchViewClosed() {
//Cuando cerramos el buscador (tras haber buscado)
String aa = "";
imgCamera.setVisibility(View.INVISIBLE);
imgClearSearch.setVisibility(View.INVISIBLE);
}
});
唯一的问题是,默认显示的用于清理搜索者文本的X仍在显示,所以我做了一个小技巧。我用默认的图标替换了默认出来的图标,因此不可见。我把它放在了一线:
Drawable closeIcon = getResources().getDrawable(R.drawable.ic_close_white);
searchView.setCloseIcon(closeIcon);
导致我自己的问题