我的活动中有一个不属于工具栏的搜索视图小部件。在我的onCreate方法中,我使用的方法 searchView.setIconified(false(; 这确实使搜索视图成为焦点,但除非我再次单击它,否则它不会调出键盘。我如何让他们的键盘也弹出?
.XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.v7.widget.Toolbar>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="15dp"
android:background="@color/lighterGrey">
<android.support.v7.widget.SearchView
android:id="@+id/search_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:transitionName="@string/search_transition"
android:background="@drawable/search_shape"/>
</LinearLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/acronym_recyclerview"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
.java:
searchView = (SearchView) findViewById(R.id.search_view);
searchView.setIconified(false);
searchView.setFocusable(true);
searchView.setIconified(false);
searchView.requestFocusFromTouch();
View view = this.getCurrentFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null) {
imm.showSoftInput(view, 0);
}
您需要更新您的 AndroidManifest.xml。将android:windowSoftInputMode="stateVisible|adjustPan"
添加到活动声明中。例如:
<activity
android:name=".MyActivity"
android:windowSoftInputMode="stateVisible|adjustPan">
</activity>
stateVisible
将在活动启动后立即显示软件键盘。adjustPan
将调整视图以补偿正在显示的键盘(以便键盘不会覆盖您尝试显示的内容(。
尝试添加以下内容
searchView.setFocusable(true(; searchView.setIconified(false(; searchView.requestFocusFromTouch((;
它应该聚焦并打开键盘。 在某些设备中,您还必须添加
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null) {
imm.showSoftInput(view, 0);
}