169

RelativeView に align bottom 属性が設定されたいくつかの要素があります。ソフト キーボードが表示されると、要素はソフト キーボードによって隠されます。

十分な画面スペースがある場合はキーボードの上に表示されるように上に移動するか、キーボードの上のセクションをスクロール可能にして、ユーザーがまだ要素を見ることができるようにしたいと思います。

これにアプローチする方法についてのアイデアはありますか?

4

22 に答える 22

118

はい、Android開発者のサイトで、フレームワークが表示されるソフトキーボードをどのように処理するかを説明しているこの記事を確認してください。

このandroid:windowSoftInputMode属性を使用して、アクティビティごとに何が発生するかを指定できます。レイアウトのサイズを変更するか、スクロールするかなどです。

于 2009-12-27T01:44:18.437 に答える
105

onCreate()次のメソッドでこのコードを使用することもできます。

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
于 2013-02-25T09:13:17.647 に答える
36

アクティビティに AndroidManifest.xml を追加します。

android:windowSoftInputMode="adjustPan|adjustResize"
于 2013-10-16T15:00:57.720 に答える
32

次のようにマニフェスト ファイルのアクティビティを変更します。

android:windowSoftInputMode="adjustResize"

また

onCreate()アクティビティ クラスのメソッドを次のように変更します。

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
于 2014-04-30T06:57:05.147 に答える
23

内部のスクロールビューで構成されるレイアウトで直面していた同様の問題。EditTextでテキストを選択しようとすると、コピー/切り取り/貼り付けアクションバーが以下のコードで上に移動するため、レイアウトのサイズが変更されません

android:windowSoftInputMode="adjustPan"

以下のように変更することで

  1. AndroidManifest.xml

    android:windowSoftInputMode="stateVisible|adjustResize"

  2. アクティビティ スタイルの style.xml ファイル

    真実

それは私のために働いた。

于 2015-07-31T09:00:51.020 に答える
13

その oncreate メソッド内の Activity の行の下に挿入

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

およびその onCreate メソッドのフラグメントの場合

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
于 2016-03-10T10:58:01.330 に答える
6

ディエゴ・ラミレスの方法を試しましたが、うまくいきました。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>
于 2015-08-13T17:21:27.847 に答える
3

私の問題に対する解決策を見つけました。それはあなたの問題とかなり同じです。

まず、ImageView と、2 つの EditText と 1 つのボタンを含む LinearLayout の 2 つの要素を持つ LinearLayout しか持っていないため、キーボードなしでフルスクリーンでそれらを分離しておく必要があり、キーボードが表示されたら、それらをより近くに表示する必要があります。

そこで、ビューを 0 dp とウェイト 1 の高さ属性でそれらの間にビューを追加しました。キーボードが表示されると、高さが固定されていないため、サイズが変更されてアスペクトが維持されます。

出来上がり!レイアウトのサイズ変更とビュー間の距離は、キーボードが存在する場合と存在しない場合で同じです。

于 2014-12-10T22:05:43.070 に答える
0

ビューに次の行を追加します。

view.requestFocus();
于 2021-11-06T18:30:25.727 に答える