2017-03-18 7 views
1

FrameLayoutまたはLinearLayoutにコンテンツを表示するアクティビティがあります。画面下部にボタンがあるはずです。アンドロイドはただ一つのrootviewしか許さないので、ButtonとLayoutの両方を何かにラップする必要があります。私はAndroidManifest.xml経由で "adjustResize"フラグを設定しました。このフラグは、ソフトキーボードの下から上にボタンを移動する必要があります。問題は、私がこれを達成できなかったことです(ボタンはソフトキーボードの下に隠れていました - ボタンは動かない)。表示されたキーボードでボタンを正しい位置に移動する唯一の方法は、線形またはフレームレイアウトをScrollViewに置き換えることです。ボタンがstateVisibleフラグ付きのレイアウトで表示されているキーボードでリサイズされていない

私の質問は、ScrollViewでのみ動作する理由は何ですか?私はこのaproachを複数のビューですでに使用していましたが、それは常に異なるビューグループでも機能しました。誰かが何か考えているのですか?

これは私のレイアウトはどのように見えるかです:あなたは、ID create_account_textとのTextViewに336dpのmarginTopを追加している

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 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="match_parent" 
    xmlns:tools="http://schemas.android.com/tools"> 

    <RelativeLayout 
     style="@style/FirebaseUI.WrapperStyle" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <!-- 
      Since the TextInputLayouts change size based on whether or not an error 
      is showing we use a relative layout to position them absolutely 
     --> 
     <android.support.design.widget.TextInputLayout 
      android:id="@+id/email_layout" 
      style="@style/FirebaseUI.Text.TextInputLayout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:paddingTop="16dp" 
      android:transitionGroup="true" 
      android:transitionName="email_field" 
      app:errorTextAppearance="@style/FirebaseUI.Text.ErrorText" 
      app:hintTextAppearance="@style/FirebaseUI.Text.HintText" 
      tools:ignore="UnusedAttribute"> 

      <android.support.design.widget.TextInputEditText 
       android:id="@+id/email" 
       style="@style/FirebaseUI.EditText.EmailField"/> 

     </android.support.design.widget.TextInputLayout> 

     <android.support.design.widget.TextInputLayout 
      android:id="@+id/name_layout" 
      style="@style/FirebaseUI.Text.TextInputLayout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:paddingTop="112dp" 
      app:errorTextAppearance="@style/FirebaseUI.Text.ErrorText" 
      app:hintTextAppearance="@style/FirebaseUI.Text.HintText"> 

      <android.support.design.widget.TextInputEditText 
       android:id="@+id/name" 
       style="@style/FirebaseUI.EditText" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:inputType="textPersonName" 
       android:hint="@string/name_hint"/> 

     </android.support.design.widget.TextInputLayout> 

     <android.support.design.widget.TextInputLayout 
      android:id="@+id/password_layout" 
      style="@style/FirebaseUI.Text.TextInputLayout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:paddingTop="224dp" 
      app:errorTextAppearance="@style/FirebaseUI.Text.ErrorText" 
      app:hintTextAppearance="@style/FirebaseUI.Text.HintText" 
      app:passwordToggleEnabled="true"> 

      <android.support.design.widget.TextInputEditText 
       style="@style/FirebaseUI.EditText.PasswordField" 
       android:id="@+id/password" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content"/> 

     </android.support.design.widget.TextInputLayout> 

     <TextView 
      android:id="@+id/create_account_text" 
      android:layout_height="wrap_content" 
      android:layout_width="match_parent" 
      android:layout_marginTop="336dp" 
      style="@style/FirebaseUI.Text.BodyText"/> 


     <Button 
      style="@style/FirebaseUI.Button" 
      android:layout_below="@id/create_account_text" 
      android:id="@+id/button_create" 
      android:layout_alignParentEnd="true" 
      android:layout_alignParentRight="true" 
      android:text="@string/button_text_save"/> 

    </RelativeLayout> 

</FrameLayout> 

おかげ

答えて

1

。これはデバイスのほとんどの部分に多いので、ソフトキーボードが表示されると、表示される画面の量は、他のビューと336dpの余白に必要な量よりも少なくなります。

ScrollViewを追加すると、softKeyboardが表示されたときにビューが下にスクロールされるので、ボタンは表示されますが、他のものは表示されません。

あなたの必要性はわかりませんが、この336dpが画面に空白を入れるだけであれば、RelativeLayoutをLinearLayoutに変換し、空白を埋めるためにレイアウトの重みを使うことができます。キーボードが表示されると、空白が調整されます。

その他のヘルプが必要な場合は、スクリーンショットを提供してください。

関連する問題