【发布时间】:2020-05-27 13:09:46
【问题描述】:
我的 IndexActivity 中有一个 searchView。单击 searchView 后,将启动一个名为 SearchActivity 的新活动。 再次在搜索活动中,我有在点击时展开的 searchView。它有一个执行外部 API 调用的查询侦听器。
但是,在我通过单击 searchView 图标打开 SearchActivity 后,我必须再次单击 searchView 才能输入它。我想要的是 searchView 应该在活动开始后立即关注。 这是我的搜索活动代码:
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.toolbar_search, menu)
val searchView: SearchView =
menu?.findItem(R.id.menu_search)?.actionView as SearchView
// searchView.setIconifiedByDefault(false)
// searchView.focusable = View.FOCUSABLE
// searchView.isIconified = false
// searchView.requestFocusFromTouch()
// searchView.onActionViewExpanded()
注释的行是我通过在网络上搜索尝试的行,但它似乎不起作用。
这是我在toolbar_searchbar.xml中的代码,它包含在SearchActivity设置的activity_search中:
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<androidx.appcompat.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:titleTextColor="@color/cardview_light_background"
app:subtitleTextAppearance="@font/alegreya_sans_medium"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@android:color/transparent"
android:id="@+id/toolbar_searchbar"
app:popupTheme="@style/AppTheme.PopupOverlay">
</androidx.appcompat.widget.Toolbar>
</com.google.android.material.appbar.AppBarLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
这是toolbar_search.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:title="Search"
android:id="@+id/menu_search"
android:icon="@drawable/quantum_ic_search_grey600_24"
app:showAsAction="always|collapseActionView"
app:actionViewClass="androidx.appcompat.widget.SearchView"
/>
</menu>
这是我一开始得到的。
这是我一开始就想要的。
【问题讨论】:
-
这是我尝试但没有成功的第一条注释行。我也不能在 xml 文件中设置它,因为 indexactivity 中也使用了相同的 xml 文件,我不想展开视图。
-
你试过 searchView.requestFocus() 吗?此外,如果即使使用
requestFocus()后键盘仍无法自行打开,您可以显式地open the keyboard。我相信这肯定会奏效。