ソフトキーボードの出現により制御設定やメイクルームのアンドロイド一部のみ

再現、ソースを明記してください。https://www.cnblogs.com/tangZH/p/12013685.html

 

プロジェクトの過程で、移動せず、コントロールの他の部分を制御するソフトキーボードの上部からの要望がありました。

この要求については、我々は明確なレイアウトが必要になります。

図1に示すように、線形レイアウトは、すべてのコントロールの線形レイアウトは直線状の内側に配置されているので、トップへ戻ることがある場合でも、作業をしない、と我々は、このように相対レイアウトを使用します。

図2に示すように、上部は、この相対的な配置親の部分は、レイアウトでラップすることを要求することが必要であり、アップトップを必要としない部分との依存関係ようlayout_aboveの種類、又は位置の変化を、その他を持つことができません変更が続きます。

その部分によって持ち上げするプロジェクトのニーズは使用:アンドロイド:layout_alignParentBottom =「true」の一番下に置きます。

 

残り:

このようなレイアウトの後、だけでなく、内部のコンフィギュレーションファイル内のマニフェストのandroid:windowSoftInputMode =「adjustResize」

 

しかし、あなたがアンドロイドを持つ親のレイアウトの内側にあることを、実際には、そのニーズアップトップの1のショートをトップアップかどうかを見つけることができます:fitsSystemWindows =「true」を

 

これは、今度は別の問題がある。我々はアンドロイドを設定し、ステータスバーの浸漬、使用している場合:余分上記父の空白のレイアウトを引き起こしますfitsSystemWindows =「true」を、空白の作品は非常にステータスバーの高さであると言われています。

 

最後に、以下の方法で解決することができますが見つかりました:

ニーズは、その後、対応するオーバーライドメソッドをカスタムレイアウトを使用してレイアウト親によって持ち上げられます。

@Override
     保護 ブールfitSystemWindows(のRectのインセット){
         場合(Build.VERSION.SDK_INT> = Build.VERSION_CODES.KITKAT){
            insets.left = 0 ;
            insets.top = 0 ;
            insets.right = 0 ;
        }
        戻る スーパー.fitSystemWindows(インセット)を、
    }
 
    @RequiresApi(API = Build.VERSION_CODES.KITKAT_WATCH)
    @オーバーライド
    公共WindowInsetsのonApplyWindowInsets(WindowInsetsインセット){
         場合(Build.VERSION.SDK_INT> = Build.VERSION_CODES.KITKAT){
             戻り スーパー .onApplyWindowInsets(insets.replaceSystemWindowInsets(0、0、0 、insets.getSystemWindowInsetBottom()))。
        } {
             リターンインセット。
        }
    }

これが解決します。

参考:https://blog.csdn.net/dbmonkey/article/details/84966318

 

おすすめ

転載: www.cnblogs.com/tangZH/p/12013685.html
おすすめ