web-dev-qa-db-ja.com

キーボードが表示されると画面のレイアウトが上に移動します

次のレイアウトがあるとしましょう:

enter image description here

下部の編集テキストをクリックすると、次のようになります。

enter image description here

ご覧のとおり、上からの画像が上に移動し、レイアウト全体が移動します。これは、このレイアウトの私のxmlです。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
   Android:layout_width="fill_parent"
   Android:layout_height="fill_parent"
   Android:background="#FFFFFF" >

   <LinearLayout
       Android:id="@+id/header"
       Android:layout_width="fill_parent"
       Android:layout_height="75dp"
       Android:layout_alignParentLeft="true"
       Android:layout_alignParentRight="true"
       Android:layout_alignParentTop="true"        
       Android:isScrollContainer="true"
       Android:background="@drawable/header" >
   </LinearLayout>

   <ScrollView
       Android:layout_width="fill_parent"
       Android:layout_height="wrap_content"
       Android:id="@+id/scrollauthentication"
       Android:layout_below="@+id/header"
       Android:background="#FFFFFF"
       Android:fillViewport="true" >

       <RelativeLayout
           xmlns:Android="http://schemas.Android.com/apk/res/Android"
           Android:layout_width="fill_parent"
           Android:layout_height="wrap_content"
           Android:background="#FFFFFF" 
           Android:id="@+id/authenticationrelativelayout">

           <TextView
               Android:id="@+id/login"
               Android:layout_width="wrap_content"
               Android:layout_height="wrap_content"
               Android:layout_alignParentLeft="true"
               Android:layout_below="@+id/header"
               Android:layout_marginLeft="30dp"
               Android:layout_marginTop="20dp"
               Android:text="login"
               Android:textAppearance="?android:attr/textAppearanceMedium"
               Android:textColor="@color/lighter_orange"
               Android:textSize="28dp" />

           <TextView
               Android:id="@+id/usernameTextView"
               Android:layout_width="wrap_content"
               Android:layout_height="wrap_content"
               Android:layout_alignLeft="@+id/login"
               Android:layout_below="@+id/login"
               Android:layout_marginTop="16dp"
               Android:text="username"
               Android:textAppearance="?android:attr/textAppearanceMedium"
               Android:textColor="@color/dark_gray" />

           <EditText
               Android:id="@+id/user"
               Android:layout_width="260dp"
               Android:layout_height="42dp"
               Android:layout_alignLeft="@+id/usernameTextView"
               Android:layout_below="@+id/usernameTextView"
               Android:background="@drawable/edittext_selector"
               Android:imeOptions="actionDone"
               Android:lines="1"
               Android:paddingLeft="10dp" />

           <TextView
               Android:id="@+id/passwordTextView"
               Android:layout_width="wrap_content"
               Android:layout_height="wrap_content"
               Android:layout_alignLeft="@+id/user"
               Android:layout_below="@+id/user"
               Android:text="password"
               Android:textAppearance="?android:attr/textAppearanceMedium"
               Android:textColor="@color/dark_gray" />

           <EditText
               Android:id="@+id/password"
               Android:layout_width="260dp"
               Android:layout_height="42dp"
               Android:layout_alignLeft="@+id/passwordTextView"
               Android:layout_below="@+id/passwordTextView"
               Android:background="@drawable/edittext_selector"
               Android:imeOptions="actionDone"
               Android:inputType="textPassword"
               Android:lines="1"
               Android:paddingLeft="10dp" >

               <requestFocus />
           </EditText>

           <CheckBox
               Android:id="@+id/remembercheckBox"
               Android:layout_width="wrap_content"
               Android:layout_height="wrap_content"
               Android:layout_alignLeft="@+id/password"
               Android:layout_below="@+id/password"
               Android:layout_marginTop="37dp"
               Android:button="@drawable/checkbox_selector"
               Android:focusable="true" />

           <TextView
               Android:id="@+id/rememberText"
               Android:layout_width="wrap_content"
               Android:layout_height="wrap_content"
               Android:layout_alignBaseline="@+id/remembercheckBox"
               Android:layout_alignBottom="@+id/remembercheckBox"
               Android:layout_toRightOf="@+id/remembercheckBox"
               Android:text="Remember me"
               Android:textAppearance="?android:attr/textAppearanceMedium"
               Android:textColor="@color/dark_gray" />
       </RelativeLayout>
   </ScrollView>

   <LinearLayout
       Android:layout_width="fill_parent"
       Android:layout_height="wrap_content"
       Android:layout_marginLeft="30dp"
       Android:layout_below="@+id/scrollauthentication"
       Android:orientation="horizontal" >

       <Button
           Android:id="@+id/loginButton"
           Android:layout_width="wrap_content"
           Android:layout_height="wrap_content"
           Android:background="@color/button_selected"
           Android:text="log in"
           Android:textColor="@drawable/textblack_selected"
           Android:textStyle="bold" >
       </Button>

       <Button
           Android:id="@+id/forgotten"
           Android:layout_width="wrap_content"
           Android:layout_height="wrap_content"
           Android:layout_marginLeft="10dp"
           Android:background="@color/button_selected"
           Android:text="forgotten password"
           Android:textColor="@drawable/textblack_selected"
           Android:textStyle="bold" />
   </LinearLayout>

</RelativeLayout>

また、このアクティビティのマニフェストファイルでこれを設定しました。

Android:windowSoftInputMode="adjustPan"

キーボードが表示されているときにレイアウトが移動しないようにする方法はありますか?ありがとうございました!!!!

20
adrian

さて、アプリのマニフェストで "windowSoftInputMode"について言及していないため、正常に動作します。キーボードが開いても画面は上に移動しません。このアプローチを試してください-マニフェストから "windowSoftInputMode"パラメーターを削除するだけです。

11
Yogesh Somani

使用してみてください

Android:windowSoftInputMode="adjustPan|adjustResize"

活動のため。

30
SALMAN

私のEditTextも同様に上昇し続けました。

編集テキストに重力を追加すると、問題が解決するようです。キーボードがEditTextを押し上げていたため、XMLのEdit Textの下部に重力を追加しました。

Android:gravity=bottom
2

これを試して:

Android:windowSoftInputMode="adjustNothing"
1
Rahul

キーボードが開かないようにするwindowsoftInputModeが既にあるので、コメントコードを追加するだけです

Android:windowSoftInputMode = "stateHidden | adjustPan | adjustResize"

0
Charlie