android - Kotlin Android 搜索菜单项在活动开始时聚焦
问题描述
问题:如何在活动开始时使搜索菜单项具有焦点?我希望活动从第二张图片开始,如下所示。
这里有我的代码:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_search_qpon)
setSupportActionBar(qponSearch_toolbar)
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
// Inflate the menu to use in the action bar
menuInflater.inflate(R.menu.search_menu, menu)
val searchItem = menu.findItem(R.id.app_bar_search)
if (searchItem!=null) {
val searchView = searchItem.actionView as SearchView
val searchHint = getString(R.string.searchHint)
searchView.setQueryHint(searchHint)
searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String?): Boolean {
return false
}
override fun onQueryTextChange(newText: String?): Boolean {
if (newText!!.toString().isNotEmpty()) {
startRecyclerView(generateData(newText))
companyList.clear()
}
else {
startRecyclerView(generateData(newText))
companyList.clear()
}
return false
}
})
}
return super.onCreateOptionsMenu(menu)
}
这里有xml文件:
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/bg"
android:orientation="vertical"
tools:context=".SearchQponActivity">
<android.support.v7.widget.Toolbar
android:id="@+id/qponSearch_toolbar"
android:layout_width="match_parent"
app:title=""
android:layout_height="56dp"
android:background="@color/white50"
android:elevation="4dp"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
/>
<android.support.v7.widget.RecyclerView
android:id="@+id/qponSearch_recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</android.support.v7.widget.RecyclerView>
</LinearLayout>
这里有 MENU 文件:
<?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/app_bar_search"
android:icon="@android:drawable/ic_menu_search"
android:title="Search"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="always" />
</menu>
解决方案
您必须在expandActionView()
方法searchItem
内调用onCreateOptionsMenu()
方法。检查下面给出的代码:
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.test_menu, menu)
val searchItem = menu?.findItem(R.id.app_bar_search)
searchItem?.expandActionView() // This line will expand the search view.
....
}
此外,您必须更改菜单布局 XML 文件。您必须将 showAsAction 的属性从 更改always
为ifRoom|collapseActionView
。检查下面给出的代码。
<item
android:id="@+id/app_bar_search"
android:icon="@android:drawable/ic_menu_search"
android:title="Search"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="ifRoom|collapseActionView" />
推荐阅读
- java - 如何从模式dd-MMM-yyyy中的给定字符串日期以整数形式获取日月和年
- matlab - 从矩阵中删除零
- angular - Angular 总是发送 Cache-Control: no-cache for source
- jquery - 如何在每行网格单元格中显示谷歌距离矩阵 API 响应?
- java - AspectJ 1.9.4 with OpenJDK 11 without Spring Context 不能作为依赖模块工作
- vuejs2 - 使用 emit 在 2 个不同的组件之间传递数据
- c++ - 使用 C++17 或更高版本对向量中的元素对求和的最“功能”方式?
- html - 如何调整谷歌 reCAPTCHA 的大小?
- html - 垂直居中模式,滚动大内容
- react-native - React Native - 无法解析模块`@babel/runtime/helpers/interopRequireDefault`