在 Android Pie (API-28) 中输入 activity 时键盘不显示
Keyboard doesn't show up when enter to activity in Android Pie (API-28)
我想在进入邮箱登录界面时弹出设备键盘。
我在 AndroidManifest.xml 文件中将 windowSoftInputMode
声明为 "stateVisible"
:
<activity
android:name=".activities.EmailLoginActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateVisible" />
我已经关注了这个documentation。
结果:
在 运行 Android API 最多 27 个设备上,显示键盘。
在 运行 Android API 28 的设备上,不显示键盘。
这是 Android Pie 中的错误吗?
有什么建议吗?
<activity
android:name=".activities.EmailLoginActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateVisible|adjustResize" />
希望对您有所帮助
似乎在Android Pie (API 28) 中,它不会自动在EditText
中设置请求焦点。
因此您必须以编程方式或在 XML 文件中设置 EditText
的 requestFocus
。
your_layout.xml
<EditText
android:id="@+id/et_email"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_20sdp"
android:inputType="textEmailAddress"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<requestFocus />
</EditText>
或
your_activity.java
findViewById(R.id.et_email).requestFocus();
对于 Android Pie,我确实也有这个问题。 .requestFocus()
对我不起作用。
我的问题的解决方案:
确保您的 EditText
确实可见。我使用 EditText
作为隐藏字段,键盘仅在将宽度和高度从 0
设置为 1dp
后显示。
如果您使用宽度和高度为 0dp 的隐藏 EditText,它将无法在 API 28 饼图上工作,我可以通过将尺寸设置为 1dp 并将小部件的所有部分设置为透明来使其工作。
这对我有用:
<EditText
android:id="@+id/hacked_edit_text"
android:layout_width="1dp"
android:layout_height="1dp"
android:background="@android:color/transparent"
android:cursorVisible="false"
android:textColor="@android:color/transparent" />
我的问题出在设备键盘设置上。
语言和输入
默认键盘
并将其更改为我的设备键盘 samsung。
在official documentation中有很好的记录:
fun showSoftKeyboard(view: View) {
if (view.requestFocus()) {
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT)
}
}
我想在进入邮箱登录界面时弹出设备键盘。
我在 AndroidManifest.xml 文件中将 windowSoftInputMode
声明为 "stateVisible"
:
<activity
android:name=".activities.EmailLoginActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateVisible" />
我已经关注了这个documentation。
结果:
在 运行 Android API 最多 27 个设备上,显示键盘。
在 运行 Android API 28 的设备上,不显示键盘。
这是 Android Pie 中的错误吗?
有什么建议吗?
<activity
android:name=".activities.EmailLoginActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateVisible|adjustResize" />
希望对您有所帮助
似乎在Android Pie (API 28) 中,它不会自动在EditText
中设置请求焦点。
因此您必须以编程方式或在 XML 文件中设置 EditText
的 requestFocus
。
your_layout.xml
<EditText
android:id="@+id/et_email"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_20sdp"
android:inputType="textEmailAddress"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<requestFocus />
</EditText>
或
your_activity.java
findViewById(R.id.et_email).requestFocus();
对于 Android Pie,我确实也有这个问题。 .requestFocus()
对我不起作用。
我的问题的解决方案:
确保您的 EditText
确实可见。我使用 EditText
作为隐藏字段,键盘仅在将宽度和高度从 0
设置为 1dp
后显示。
如果您使用宽度和高度为 0dp 的隐藏 EditText,它将无法在 API 28 饼图上工作,我可以通过将尺寸设置为 1dp 并将小部件的所有部分设置为透明来使其工作。 这对我有用:
<EditText
android:id="@+id/hacked_edit_text"
android:layout_width="1dp"
android:layout_height="1dp"
android:background="@android:color/transparent"
android:cursorVisible="false"
android:textColor="@android:color/transparent" />
我的问题出在设备键盘设置上。 语言和输入 默认键盘 并将其更改为我的设备键盘 samsung。
在official documentation中有很好的记录:
fun showSoftKeyboard(view: View) {
if (view.requestFocus()) {
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT)
}
}