当android:windowTranslucentStatus = true时,键盘隐藏EditText

Roc*_*nat 32 android android-softkeyboard android-4.4-kitkat

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

问题的一个示例: http://fewlaps.com/xtra/quitnowStackoverflow.png

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

第一个屏幕: <item name="android:windowTranslucentStatus">false</item>

第二个屏幕: <item name="android:windowTranslucentStatus">true</item>

我们认为这是Kitkat发布的一个错误,但我们希望您了解这一点.我们有点生气了.当然,如果有人有解决方案,那将是惊人的.

编辑:我刚刚将此问题添加到Android问题跟踪器.您可能有兴趣主演此问题:https://issuetracker.google.com/issues/36986276

Dan*_*ech 7

我也遇到了这个非常烦人的问题.但最终我得到了这个工作:

<style name="Theme.MyApp">
    <item name="android:windowTranslucentStatus">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)

我没有在主题中设置fitSystemWindows ="true",而是将其设置在我的布局的根视图上.

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fitsSystemWindows="true"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

我还在我的活动中使用了很棒的SystemBarTintManager:

new SystemBarTintManager(this).setStatusBarTintEnabled(true);
Run Code Online (Sandbox Code Playgroud)

这似乎运作良好,但诚然看起来相当善变.希望它无论如何都能帮助别人!


blu*_*ile 0

解决方法是:

添加 Touch 或 Focus 或 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();
        }
    });
Run Code Online (Sandbox Code Playgroud)

只需根据您的防守布局调整 v 并确保您移动的位置看起来不错。