我的活动中有一个searchview小部件,它不属于工具栏。在我使用的onCreate方法中 searchView.setIconified(假); 这确实使searchView成为焦点,但除非我再次点击它,否则它不会调出键盘。如何弹出键盘?
XML:
java.util.Scanner
的java:
<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>
答案 0 :(得分:0)
您需要更新AndroidManifest.xml。将android:windowSoftInputMode="stateVisible|adjustPan"
添加到您的活动声明中。例如:
<activity
android:name=".MyActivity"
android:windowSoftInputMode="stateVisible|adjustPan">
</activity>
一旦活动开始, stateVisible
将显示软件键盘。 adjustPan
会调整视图以补偿所显示的键盘(以便您尝试显示的内容不会被键盘覆盖)。
答案 1 :(得分:0)
尝试添加以下内容
searchView.setFocusable(真); searchView.setIconified(假); searchView.requestFocusFromTouch();
它应该集中并打开键盘。 在某些设备中,您还必须添加
struct Geometry:Codable {
let type:String
let latitude: Double
let longitude: Double
enum CodingKeys: String, CodingKey {
case type, coordinates
}
enum CoordinatesKeys: String, CodingKey {
case latitude, longitude
}
init (from decoder :Decoder ) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
type = try container.decode(String.self, forKey: .type)
let coords:[Double] = try container.decode([Double].self, forKey: .coordinates)
if coords.count != 2 { throw DecodingError.dataCorruptedError(forKey: CodingKeys.coordinates, in: container, debugDescription:"Invalid Coordinates") }
latitude = coords[1]
longitude = coords[0]
}
func encode(to encoder: Encoder) throws {
}
}
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);