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

时间:2013-11-11 01:17:48

标签: 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

6 个答案:

答案 0 :(得分:8)

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

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

而不是设置fitSystemWindows =&#34; true&#34;在主题中,我将其设置在我的布局的根视图上。

<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>

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

new SystemBarTintManager(this).setStatusBarTintEnabled(true);

这似乎运作良好,但诚然看起来相当善变。希望它能帮到某人!

答案 1 :(得分: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();
        }
    });

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

答案 2 :(得分:0)

在你的活动中创建

之后将这些行放在下面
let rec iterate f value = seq { 
   yield value
   yield! iterate f (f value) }

为我工作:)

答案 3 :(得分:0)

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

请注意,这会将整个窗口平移到键盘之外,而不是调整其大小。

更多信息here(搜索windowSoftInputMode)。

答案 4 :(得分:0)

android:windowSoftInputMode="adjustPan"中设置AndroidManifest.xml即可。但我只想说活动是FullScreen时不起作用,有关详细信息,请参阅Android How to adjust layout in Full Screen Mode when softkeyboard is visible

答案 5 :(得分:-1)

还添加以下内容

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