Android Studio 2.3.3,Android 4.3。
在我的片段中,我有 searchView 组件(不在ToolBar中)。这是我的片段。
fragment_layout.xml:
__dirname.split('\\')
在我的片段中:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.SearchView
android:id="@+id/searchView"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_marginEnd="20dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginStart="20dp"
android:background="@drawable/search_view_bg"
app:defaultQueryHint="@string/settings"
app:searchHintIcon="@null" />
</LinearLayout>
searchView 具有焦点时的结果:
正如您可以看到提示仅在 searchView 处于焦点时显示。 但我还需要在 searchView 不在焦点时显示提示。我希望提示始终可见。
P.S。如果使用方法 private void init(View view) {
searchView = view.findViewById(R.id.searchView);
SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
searchView.setSuggestionsAdapter(new SearchCatalogSuggestionsAdapter(getActivity()));
ViewCompat.setLayoutDirection(view.findViewById(R.id.searchView), ViewCompat.LAYOUT_DIRECTION_RTL);
}
,则 searchView 自动获得焦点。但是,只有当用户点击 searchView 时才需要关注。
答案 0 :(得分:2)
我找到了适用于Android 4.3 +的解决方案:
我使用麦克风图标,禁用点击它并将其替换为自定义图标(玻璃)
300毫秒后隐藏键盘(因为onActionViewExpanded()
显示软键盘)
结果我有:
这是我的代码:
Java代码:
ImageView voiceButtonIcon = view.findViewById(android.support.v7.appcompat.R.id.search_voice_btn);
voiceButtonIcon.setImageResource(R.drawable.ic_search_black);
voiceButtonIcon.setEnabled(false);
// Workaround! Show hint when searchView has no focus
searchView.onActionViewExpanded();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
searchView.clearFocus();
}
}, 300);
layout xml:
<android.support.v7.widget.SearchView
android:id="@+id/searchView"
android:layout_width="0dp"
android:layout_height="48dp"
android:layout_marginEnd="20dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginStart="20dp"
android:background="@drawable/search_view_bg"
android:theme="@style/SearchViewTheme"
app:defaultQueryHint="@string/settings"
app:searchHintIcon="@null" />
结果: searchView 没有焦点:
和 searchView 是焦点:
总是提示显示!