在 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 文件中设置 EditTextrequestFocus

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 9 Api 28 通知未显示

在Android Studio 3.0中构建PIE和非PIE可执行文件

如何在 Android 9.0(PIE) 中获取 WIFI SSID?

如何解决 GPS 在后台 android Pie 中自动关闭?

Android Api(Okhttps)未在android 9(pie)及更高版本中调用[重复]