android:windowTranslucentStatus=true时键盘隐藏编辑文本

android:windowTranslucentStatus=true时键盘隐藏编辑文本,android,android-softkeyboard,android-4.4-kitkat,Android,Android Softkeyboard,Android 4.4 Kitkat,我们在应用程序中应用了新的Android KitKat半透明主题,当键盘出现时,我们遇到了一个奇怪的问题。如果我们不使用新的android:windowTranslucentStatus属性,所有功能都会正常工作:屏幕大小调整,所有功能都保持可见。但是当我们使用android:windowTranslucentStatus时,屏幕没有调整大小,我们的EditText被键盘隐藏 该问题的一个样本: 屏幕之间的唯一区别在于样式中的属性: 第一屏: false 第二屏: true 我们认为这是Kit

我们在应用程序中应用了新的Android KitKat半透明主题,当键盘出现时,我们遇到了一个奇怪的问题。如果我们不使用新的
android:windowTranslucentStatus
属性,所有功能都会正常工作:屏幕大小调整,所有功能都保持可见。但是当我们使用android:windowTranslucentStatus
时,屏幕没有调整大小,我们的
EditText
被键盘隐藏

该问题的一个样本:

屏幕之间的唯一区别在于样式中的属性:

第一屏:
false

第二屏:
true

我们认为这是Kitkat版本中的一个bug,但我们希望您注意这一点。我们有点生气了。当然,如果有人有一个解决方案,那将是惊人的

编辑:我刚刚将这个问题添加到Android问题跟踪器中。也许你会对这一问题感兴趣:

解决办法是:

添加触摸、焦点或ClickListener,并将EditText保持布局向上移动到屏幕的一半。然而,这确实不是它应该采用的工作方式,所以请祈祷谷歌能将其修复

EditText e = new EditText(this);
    e.setOnFocusChangeListener(new OnFocusChangeListener() {

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if(hasFocus)
                v.animate().x(screenHeight/2f).start();
            else
                v.animate().x(screenHeight).start();
        }
    });

只需将v调整到您的等待布局,并确保您移动的位置看起来不错。

还添加以下内容

<item name="android:fitsSystemWindows">true</item>
true

我也遇到了这个非常恼人的问题。但最终我做到了:

<style name="Theme.MyApp">
    <item name="android:windowTranslucentStatus">true</item>
</style>

这似乎效果不错,但不可否认,这似乎相当变化无常。希望它能帮助别人

在活动中的oncreate之后,将其放在下面的行中

    int currentapiVersion = android.os.Build.VERSION.SDK_INT;
    if (currentapiVersion >= android.os.Build.VERSION_CODES.LOLLIPOP) {
        Window window = this.getWindow();
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        window.setStatusBarColor(mCategoryColors.getColorStatusBar());
    }

为我工作:)

这不是一个完美的解决方案,但我发现一个解决方法是在
AndroidManifest.xml
中设置
android:windowSoftInputMode=“adjustPan”

请注意,这将平移整个窗口以避开键盘,而不是调整其大小


更多信息(搜索
windowSoftInputMode
)。

AndroidManifest.xml
中设置
android:windowSoftInputMode=“adjustPan”
。但我只想说,当“活动”全屏显示时,它不起作用,有关更多详细信息,请参见

感谢@antimo发布图像并格式化整个问题:)您是否尝试将设置为true?是的,我们也尝试在EditText及其容器中设置它。但是我们运气不太好。您可以尝试将
fitSystemWindows
attr放入此
活动的根布局中。它适用于甲烷罐的进近!现在,我们决定在不使用半透明布局的情况下启动该应用程序,因此没有必要修补该问题。无需急于购买半透明的顶栏…:)谢谢@DanielGrech!我也尝试过你们提到的,创建一个根布局,fitsystemwindows为true,它可以工作。但它会创建GPU必须渲染的另一层。。。我们让它工作了两个月,但是。。。当我们看到SystemBarIntManager库时,一切都发生了变化。它就像一个符咒!并且还要做必要的工作,以避免GPU过度扩展。很好的解决方案!如果没有布局,显示的唯一内容是对话框,该怎么办?或者在添加时,这会破坏当前活动的布局?看这里:
new SystemBarTintManager(this).setStatusBarTintEnabled(true);
    int currentapiVersion = android.os.Build.VERSION.SDK_INT;
    if (currentapiVersion >= android.os.Build.VERSION_CODES.LOLLIPOP) {
        Window window = this.getWindow();
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        window.setStatusBarColor(mCategoryColors.getColorStatusBar());
    }