【问题标题】:Keyboard doesn't show up when enter to activity in Android Pie (API-28)在 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 中的错误吗?

有什么建议吗?

【问题讨论】:

    标签: android android-studio android-softkeyboard android-9.0-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_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();
      

      【讨论】:

      【解决方案3】:

      我对 Android Pie 也有这个问题。 .requestFocus() 对我不起作用。

      我的问题的解决方案:

      确保您的EditText 确实可见。我使用EditText作为隐藏字段,将宽度和高度从0设置为1dp后才显示键盘。

      【讨论】:

        【解决方案4】:

        如果您使用宽度和高度为 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" />
        

        【讨论】:

        • 我有一个 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)
              }
          }
          

          【讨论】:

            猜你喜欢
            • 2011-10-17
            • 2011-02-12
            • 1970-01-01
            • 2012-05-03
            • 1970-01-01
            • 1970-01-01
            • 2019-02-21
            • 2012-04-01
            相关资源
            最近更新 更多