web-dev-qa-db-ja.com

キーボードが表示されたときにAndroidビューをスクロール可能にする方法は?

私はいくつかのフィールド(名前、電子メール、パスワード、登録ボタン)を持つビューを持っています:

<ScrollView
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent" >

    <ViewFlipper
        Android:id="@+id/viewflipper"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content" >

        //Layouts

    </ViewFlipper>

</ScrollView>

Edittextフィールドにフォーカスを合わせると、キーボードが表示され、ビューの下のフィールドがオーバーレイされます。そのため、キーボードが存在するときにそれらを見ることができません。下のフィールドが見えるようにビューをスクロール可能にする方法を教えてください。さらに、ビューを自動的にスクロールして、フォーカスされたフィールドを表示する方法。

15
Alexis

AndroidManifest.xmlファイルにアクティビティのAndroid:windowSoftInputMode="adjustResize"属性を含める必要があります。その後、Androidで自動的にサイズ変更が行われます。

<activity Android:name="..."
          ...
          Android:windowSoftInputMode="adjustResize">
    ...
/>
42
Aleks G

私は簡単なxmlファイルを作成しました。これがあなたが探しているものであることを願っています。

ステップ1。キーパッドが表示されているときにスクロールできます。

ステップ2。テキストフィールドをクリックすると、フォーカス/キーパッドの上に表示されます。

<ScrollView Android:id="@+id/ScrollView01"
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:fillViewport="true" 
Android:layout_width="fill_parent"
Android:layout_height="fill_parent">
<LinearLayout 
    Android:orientation="vertical"
    Android:layout_width="fill_parent" 
    Android:weightSum="1.0" 
    Android:layout_height="match_parent"
    Android:focusable="true"
    Android:focusableInTouchMode="true" 
    Android:id="@+id/l_layout">
    <EditText 
        Android:layout_height="wrap_content" 
        Android:layout_width="match_parent" 
        Android:id="@+id/editText1" 
        Android:layout_marginTop="100dp">
        <requestFocus></requestFocus>
    </EditText>
    <EditText 
        Android:layout_height="wrap_content" 
        Android:layout_width="match_parent" 
        Android:id="@+id/editText2" 
        Android:layout_marginTop="100dp">
        </EditText>
    </LinearLayout> 
</ScrollView>
6
swiftBoy

私の場合、@ Aleks Gソリューションが機能していませんでした。だから私は私の問題を解決しました

<RelativeLayout
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    >

<ScrollView
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:id="@+id/registration_scroll_view"
    Android:layout_alignParentTop="true"
    Android:layout_above="@+id/btn_register_submit"
    >

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:gravity="center"
        Android:orientation="vertical">

       <!--This comment will be replaced 
           by your focusable views-->

    </LinearLayout>
</ScrollView>

<Button
    Android:id="@+id/btn_register_submit"
    Android:layout_width="match_parent"
    Android:layout_height="50dp"
    Android:layout_alignParentBottom="true"
    Android:background="@drawable/form_action_button_green"
    Android:gravity="center"
    Android:text="@string/submit"
    />

</RelativeLayout>
0
Sandeep Sharma

これを試しましたか:

<ScrollView
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent" >

<ViewFlipper
    Android:id="@+id/viewflipper"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content" >
    <ScrollView 
        Android:layout_width="fill_parent"
        Android:layout_height="fill_parent"
        Android:id="@+id/scroll_container">
        //Layouts
    </ScrollView>


</ViewFlipper>
0
Rafael T