在Android Pie(API-28)中进入活动状态时,键盘没有显示

时间:2018-08-21 13:11:19

标签: android android-studio android-softkeyboard android-9.0-pie

我要在进入“电子邮件登录”屏幕时弹出设备键盘。

我在 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中的错误吗?

有什么建议吗?

6 个答案:

答案 0 :(得分:18)

似乎在Android Pie(API 28)中,它不会自动在EditText中设置请求焦点。

因此,您必须以编程方式或在XML文件中设置requestFocus中的EditText

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>

OR

your_activity.java

findViewById(R.id.et_email).requestFocus();

答案 1 :(得分:1)

如果您使用宽度和高度为0dp的隐藏EditText,则它不适用于API 28 pie,我可以通过将尺寸设置为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" />

答案 2 :(得分:0)

我对于Android Pie也确实有问题。 .requestFocus()对我不起作用。

我的问题的解决方案:

确保您的EditText实际上可见。我将EditText用作隐藏字段,并且仅在将宽度和高度从0设置为1dp时才显示键盘。

答案 3 :(得分:0)

我的问题出在设备键盘设置上。 语言和输入 默认键盘 并以我的情况将其更改为三星的设备键盘。

enter image description here

答案 4 :(得分:0)

official documentation中有很好的记录:

fun showSoftKeyboard(view: View) {
    if (view.requestFocus()) {
        val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
        imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT)
    }
}

答案 5 :(得分:-3)

<activity
    android:name=".activities.EmailLoginActivity"
    android:launchMode="singleTask"
    android:screenOrientation="portrait"   
    android:windowSoftInputMode="stateVisible|adjustResize" />

希望这对您有帮助