33

アプリに新しい Android KitKat 半透明テーマを適用していますが、キーボードが表示されると奇妙な問題が発生します。new 属性を使用しない場合android:windowTranslucentStatus、すべてが通常どおり機能します。画面のサイズが変更され、すべてが表示されたままになります。しかし、 を使用しているときはandroid:windowTranslucentStatus、画面のサイズが変更されずEditText、キーボードによって非表示になります。

問題のサンプル: http://fewlaps.com/xtra/quitnowStackoverflow.png

画面間の唯一の違いは、スタイルの属性にあります。

最初の画面: <item name="android:windowTranslucentStatus">false</item>

2 番目の画面: <item name="android:windowTranslucentStatus">true</item>

これは Kitkat リリースのバグだと思いますが、ご注意ください。私たちは少し怒っています。もちろん、誰かが解決策を持っていれば、それは素晴らしいことです。

編集: この問題を Android イシュー トラッカーに追加しました。おそらく、問題にスターを付けることに興味があるでしょう: https://issuetracker.google.com/issues/36986276

4

6 に答える 6

7

私もこの非常に厄介な問題に遭遇しました。しかし、最終的に私はこれを機能させました:

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

テーマに 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>

また、アクティビティで優れたSystemBarTintManagerを使用しています。

new SystemBarTintManager(this).setStatusBarTintEnabled(true);

これはうまくいくように見えますが、確かにかなり気まぐれです。とにかく誰かを助けることを願っています!

于 2014-01-20T22:35:56.947 に答える
0

アクティビティの 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());
    }

私のために働いてください:)

于 2015-09-24T09:04:33.490 に答える
0

回避策は次のとおりです。

Touch または Focus または ClickListener を追加し、EditText 保持レイアウトを画面の半分まで上に移動します。ただし、これは実際には機能する方法ではないため、指を交差させて、Google が修正されることを願っています。

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 を保持レイアウトに合わせて調整し、移動する位置が見栄えがするようにします。

于 2013-11-11T02:30:08.627 に答える