在 Android Pie (API-28) 中进入活动时键盘不显示
Posted
技术标签:
【中文标题】在 Android Pie (API-28) 中进入活动时键盘不显示【英文标题】:Keyboard doesn't show up when enter to activity in Android Pie (API-28) 【发布时间】:2019-01-27 16:33:12 【问题描述】:我想在进入电子邮件登录屏幕时弹出设备键盘。
我在 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 中的错误吗?
有什么建议吗?
【问题讨论】:
【参考方案1】:<activity
android:name=".activities.EmailLoginActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateVisible|adjustResize" />
希望对你有帮助
【讨论】:
【参考方案2】:似乎在 Android Pie (API 28) 中,它不会自动在 EditText
中设置请求焦点。
因此,您必须以编程方式或在 XML 文件中设置 EditText
的 requestFocus
。
your_layout.xml
<EditText
android:id="@+id/et_email"
android:layout_
android:layout_
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();
【讨论】:
如果你从onResume()调用requestFocus(),你需要延迟调用见***.com/questions/5227118/…【参考方案3】:我对 Android Pie 也有这个问题。 .requestFocus()
对我不起作用。
我的问题的解决方案:
确保您的EditText
确实可见。我使用EditText
作为隐藏字段,将宽度和高度从0
设置为1dp
后才显示键盘。
【讨论】:
【参考方案4】:如果您使用宽度和高度为 0dp 的隐藏 EditText,它将不适用于 API 28 饼图,我可以通过将尺寸设置为 1dp 并将小部件的所有部分设置为透明来使其工作。 这对我有用:
<EditText
android:id="@+id/hacked_edit_text"
android:layout_
android:layout_
android:background="@android:color/transparent"
android:cursorVisible="false"
android:textColor="@android:color/transparent" />
【讨论】:
我有一个 EditText,其宽度和高度在 LinearLayout 中设置为 wrap_content,LinearLayout 的可见性不可见。我的 EditText 无法在 Android Pie 中检索焦点。我用这个答案将我的editText的宽度和高度设置为1dp,然后它再次像一个魅力一样工作。【参考方案5】:我的问题在于设备键盘设置。 语言和输入 默认键盘 并在我的情况下将其更改为您的设备键盘三星。
【讨论】:
【参考方案6】:official documentation 中有很好的记录:
fun showSoftKeyboard(view: View)
if (view.requestFocus())
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT)
【讨论】:
以上是关于在 Android Pie (API-28) 中进入活动时键盘不显示的主要内容,如果未能解决你的问题,请参考以下文章
多进程中的 Android Pie (9.0) WebView
在Android Studio 3.0中构建PIE和非PIE可执行文件
如何在 Android 9.0(PIE) 中获取 WIFI SSID?