在 Android 上的 SearchView 中添加相机图标
Add camera icon in SearchView on Android
我会试着解释一下,虽然我的英语有点差。
Estoy utilizando MaterialSearchView de Miguel Catalan: MaterialSearchView
我是 Whosebug 的新手,他们不允许我上传图片。我会试着解释一下。我的应用程序的主屏幕在工具栏中有一个 MaterialSearchView。按搜索图标后,我会转到可以搜索的文本框
我想在 SerchView 的 'X' 右侧放置一个相机图标。
有人可以帮助我吗?或者告诉我其他一些搜索组件,可以让您在搜索时在搜索栏中添加图标?
编辑
我找到了解决办法。这不是最专业的方式,但它是有效的。
在 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 class的监听器中,我们在显示搜索器时显示图像,在隐藏搜索器时隐藏图像。
//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:
好的,那个图标是ImageView,所以你可以使用:
searchView.findViewById(id)(ID 必须进行逆向工程)
searchView.GetChildAt(需要猜的整数位置); (位置应该在1-5之间)
我找到了解决办法。这不是最专业的方式,但它是有效的。
在 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>
然后,在javaclass的监听器中,我们在显示搜索器时显示图像,在隐藏搜索器时隐藏图像。
//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);
结果是我自己的问题
我会试着解释一下,虽然我的英语有点差。
Estoy utilizando MaterialSearchView de Miguel Catalan: MaterialSearchView
我是 Whosebug 的新手,他们不允许我上传图片。我会试着解释一下。我的应用程序的主屏幕在工具栏中有一个 MaterialSearchView。按搜索图标后,我会转到可以搜索的文本框
我想在 SerchView 的 'X' 右侧放置一个相机图标。
有人可以帮助我吗?或者告诉我其他一些搜索组件,可以让您在搜索时在搜索栏中添加图标?
编辑
我找到了解决办法。这不是最专业的方式,但它是有效的。
在 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 class的监听器中,我们在显示搜索器时显示图像,在隐藏搜索器时隐藏图像。
//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:
好的,那个图标是ImageView,所以你可以使用:
searchView.findViewById(id)(ID 必须进行逆向工程)
searchView.GetChildAt(需要猜的整数位置); (位置应该在1-5之间)
我找到了解决办法。这不是最专业的方式,但它是有效的。
在 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>
然后,在javaclass的监听器中,我们在显示搜索器时显示图像,在隐藏搜索器时隐藏图像。
//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);
结果是我自己的问题