android - windowSoftInputMode 在 Android M 中没有效果

标签 android android-activity android-dialogfragment android-6.0-marshmallow

我有一个在 AndroidManifest 中设置了 android:windowSoftInputMode="adjustNothing" 的 MainActivity。主题有父 Theme.AppCompat.Light.NoActionBar。我向此 Activity 添加一个 DialogFragment 并在其中显示一个 AlertDialog,然后在 fragment 内设置 alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

现在,在 Android 5.1.1 上它可以按预期工作。创建对话框时键盘不会自动显示。当用户点击对话框内的 EditText 时,键盘会弹出并调整 Activity 的大小,使其不会重叠。

问题是在 Android M 上,这种情况不会发生。创建对话框时确实没有显示键盘,但是当用户触摸 EditText 后弹出键盘时,它会与对话框重叠。

知道为什么在 M 上会发生这种情况,但在以前的版本上一切正常吗?

编辑:显然,在创建仅包含问题基础知识的 HelloWorld 项目后,我发现以下 2 个 Activity 主题元素导致键盘无法调整大小。如果有人对这个问题有任何永久的解决方案,我洗耳恭听(或者更确切地说是眼睛)。

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="android:windowTranslucentStatus">true</item>
</style>

最佳答案

我发现 Activity 主题中的以下两行会导致键盘无法调整大小。

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="android:windowTranslucentStatus">true</item>
</style>

目前,这是一个快速修复。如果有人有一个永久的解决方案来保留这两行,但也可以解决问题,请发布另一个答案。

关于android - windowSoftInputMode 在 Android M 中没有效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30780134/

相关文章:

android - 使用 itemtouchhelper、recyclerview 和 Firestore 拖放项目(如 Google Tasks)

android - 使用 NDK 显示轮廓的图像处理

android - 如何在 kotlin 中分配同名类变量?

android - 登录成功后隐藏登录页面并在android中显示main_activity

java - 无法在另一个类中实例化 Activity

android - 更改应用程序名称和包

java - SQLite 异常 : no such column in Android

android - 使用导航组件显示日期选择器对话框 fragment 时出现问题

android - DialogFragment 相对于 AlertDialog 的优势

android - 设备旋转后重新排序的 DialogFragments