RelativeView に align bottom 属性が設定されたいくつかの要素があります。ソフト キーボードが表示されると、要素はソフト キーボードによって隠されます。
十分な画面スペースがある場合はキーボードの上に表示されるように上に移動するか、キーボードの上のセクションをスクロール可能にして、ユーザーがまだ要素を見ることができるようにしたいと思います。
これにアプローチする方法についてのアイデアはありますか?
RelativeView に align bottom 属性が設定されたいくつかの要素があります。ソフト キーボードが表示されると、要素はソフト キーボードによって隠されます。
十分な画面スペースがある場合はキーボードの上に表示されるように上に移動するか、キーボードの上のセクションをスクロール可能にして、ユーザーがまだ要素を見ることができるようにしたいと思います。
これにアプローチする方法についてのアイデアはありますか?
はい、Android開発者のサイトで、フレームワークが表示されるソフトキーボードをどのように処理するかを説明しているこの記事を確認してください。
このandroid:windowSoftInputMode
属性を使用して、アクティビティごとに何が発生するかを指定できます。レイアウトのサイズを変更するか、スクロールするかなどです。
onCreate()
次のメソッドでこのコードを使用することもできます。
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
アクティビティに AndroidManifest.xml を追加します。
android:windowSoftInputMode="adjustPan|adjustResize"
次のようにマニフェスト ファイルのアクティビティを変更します。
android:windowSoftInputMode="adjustResize"
また
onCreate()
アクティビティ クラスのメソッドを次のように変更します。
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
内部のスクロールビューで構成されるレイアウトで直面していた同様の問題。EditTextでテキストを選択しようとすると、コピー/切り取り/貼り付けアクションバーが以下のコードで上に移動するため、レイアウトのサイズが変更されません
android:windowSoftInputMode="adjustPan"
以下のように変更することで
AndroidManifest.xml
android:windowSoftInputMode="stateVisible|adjustResize"
アクティビティ スタイルの style.xml ファイル
真実
それは私のために働いた。
その oncreate メソッド内の Activity の行の下に挿入
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
およびその onCreate メソッドのフラグメントの場合
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
ディエゴ・ラミレスの方法を試しましたが、うまくいきました。AndroidManifest で:
<activity
android:name=".MainActivity"
android:windowSoftInputMode="stateHidden|adjustResize">
...
</activity>
activity_main.xml で:
<LinearLayout ...
android:orientation="vertical">
<Space
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1" />
<EditText
android:id="@+id/edName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/first_name"
android:inputType="textPersonName" />
<EditText ...>
...
</LinearLayout>
私の問題に対する解決策を見つけました。それはあなたの問題とかなり同じです。
まず、ImageView と、2 つの EditText と 1 つのボタンを含む LinearLayout の 2 つの要素を持つ LinearLayout しか持っていないため、キーボードなしでフルスクリーンでそれらを分離しておく必要があり、キーボードが表示されたら、それらをより近くに表示する必要があります。
そこで、ビューを 0 dp とウェイト 1 の高さ属性でそれらの間にビューを追加しました。キーボードが表示されると、高さが固定されていないため、サイズが変更されてアスペクトが維持されます。
出来上がり!レイアウトのサイズ変更とビュー間の距離は、キーボードが存在する場合と存在しない場合で同じです。
ビューに次の行を追加します。
view.requestFocus();