Androidソフトキーボードが入力をブロックし、adjustResizeが設定されても無効です

1995 ワード

キーボードがイジェクトされると、レイアウトの下部にあるナビゲーションバーが上部に表示されます.
まず、多くの文章で示した解決策は以下の通りです.
ここにいるよxmlで、ナビゲーションバーに関連するactivityに次のように追加します.
?
1
2
3
4 < activity   android:name = ".filing.MainActivity" android:windowSoftInputMode = "adjustResize|stateHidden"   />
しかし、設定すると入力内容が遮断されます.しかし、上記の設定方法が有効である場合があることに気づきました.最終的な原因は私たちのactivityレイアウトと関係があることを発見しました.レイアウト外層が相対レイアウトRelativeLayoutの場合、上の設定に従ってレイアウトが再調整されますが、RelativeLayoutに確定ボタンが入っている場合、属性はlayout_です.alignParentBottom = true.この場合も、このボタンは常にソフトキーボードの上に留まり、入力内容が遮断されます.
最終的な解決策は、adjustPanプロパティを使用して問題を完璧に解決することです.android:windowSoftInputMode = "adjustPan"
WindowSoftInputModeプロパティの説明:
アクティブなメインウィンドウが、画面に含まれるソフトキーボードウィンドウとどのように対話するか.このプロパティの設定は2つのことに影響します.
ソフトキーボードのステータスが非表示または表示であるかどうか--アクティブ(Activity)がユーザーの注目の焦点となっている.
アクティブなメインウィンドウの調整-アクティブなメインウィンドウのサイズを減らして、スペースを空けてキーボードを置くか、またはアクティブなウィンドウの部分がであるかどうか.
ソフトキーボードが上書きされると、その内容の現在の焦点が表示されます.
この設定の値(「stateUnspecified」および「adjustUnspecified」以外)は、トピックで設定した値を上書きします.
その設定は、次のリストの値、または「state...」の値に「adjust...」の値を加えた組み合わせでなければなりません.
各値の意味:
【A】stateUnspecified:ソフトキーボードの状態は指定されておらず、適切な状態またはテーマに依存する設定が選択されます
【B】stateUnchanged:このactivityが現れると、ソフトキーボードは、非表示にしても表示にしても、前のactivityのままになります
【C】stateHidden:ユーザーがactivityを選択した場合、ソフトキーボードは常に非表示になります
【D】stateAlwaysHidden:Activityメインウィンドウがフォーカスをとると、ソフトキーボードも常に非表示になります
【E】stateVisible:ソフトキーボードは通常表示されます
【F】stateAlwaysVisible:ユーザーがactivityを選択した場合、常にソフトキーボードが表示される状態
【G】adjustUnspecified:デフォルト設定、通常システムによって非表示か表示かを決める
【H】adjustResize:Activityは常に画面の大きさを調整してソフトキーボードのスペースを残す
【I】adjustPan:現在のウィンドウの内容は自動的に移動して、現在の焦点がキーボードによって上書きされないようにし、ユーザーが合計できるようにする