2017-05-23 4 views
1

次の問題があります。私のレイアウトのキーボードで特定のレイアウトを移動しないようにします。

構造がある:私の活動の

android:windowSoftInputMode="adjustResize" 

が、問題は、フッタは、キーボード、オープンに上がっていくということです。

<RelativeLayout> 
    <AppBarLayout> 
     <Toolbar></Toolbar> 
    </AppBarLayout> 
    <FrameLayout> Here I load fragments </FrameLayout> 
    <Footer></Footer> 
</RelativeLayout> 

私は機能を使用したいと思います。フッタだけを動かすのを防ぐ方法はわかりませんが、他のすべてのビューは移動しません。私は解決のための日を探していますが、成功はありません。

私が設定:

android:windowSoftInputMode="adjustPan" 

フッターが良いですどの動いていないが、のEditTextでフォームを迷惑と悪いUI/UXでキーボードで覆われています。

私のフッターはここ

android:layout_alignParentBottom="true" 

は完全なXMLでいる:事前に

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/activity_logged_in" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<android.support.design.widget.AppBarLayout 
    android:id="@+id/main_app_bar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/main_app_toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> 


    </android.support.v7.widget.Toolbar> 

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


<LinearLayout 
    android:id="@+id/bottom_navigation" 
    android:layout_width="match_parent" 
    android:layout_height="50dp" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentStart="true" 
    android:orientation="horizontal" 
    android:paddingBottom="5dp" 
    android:paddingTop="5dp"> 

    <!-- Footer goes here --> 

</LinearLayout> 


<FrameLayout 
    android:id="@+id/fragment_logged_in_container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_above="@id/bottom_navigation" 
    android:layout_below="@id/main_app_bar" /> 

</RelativeLayout> 

おかげ

+0

フッターを「親ボトムに合わせる」ようにしてみましたか?理解しやすい完全なxmlコードを投稿してください。 –

+0

はい、でも同じです。 –

+0

理解しやすい完全なxmlコードを投稿してください。 –

答えて

0
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:orientation="vertical"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/main_app_bar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/main_app_toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> 


     </android.support.v7.widget.Toolbar> 

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

    <FrameLayout 
     android:id="@+id/fragment_logged_in_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="1"> 

     </FrameLayout> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 


    </LinearLayout> 


</LinearLayout> 

は、これは私のために働きました。

+0

それはまだキーボードと一緒です。最後のLinearLayoutの高さを50dpに設定してください。 –

+0

あなたの断片のためにそれを待ちます。 。。onCreateView 'getActivity()は、GetWindow()setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)で コール;' –

+0

いや、それは動作しません:( –

0

まず、レイアウトルートに<RelativeLayout>を使用してください。

今、あなたは、2つの方法でコンテンツをスタックすることができます:

以下から

  • 以上から

    1. を使用すると、コンテンツAの5個を持っていると言う - E.あなたが唯一のE移動しますあなたのアプリウィンドウが下からサイズ変更されると(つまり、キーボードは下から表示されます)。だからあなたがしたいのは、上から積み重ね始め、下から積み重ねることです。

      ここは例です。不必要な属性は、簡潔にするために省略されています。

      <RelativeLayout 
          android:layout_width="match_parent" 
          android:layout_height="match_parent"> 
      
      <AnyView 
          android:id="@+id/A" 
          android:layout_alignParentTop="true"/> 
      
      <AnyView 
          android:id="@+id/B" 
          android:layout_below="@+id/A"/> 
      
      <AnyView 
          android:id="@+id/C" 
          android:layout_below="@+id/B"/> 
      
      <AnyView 
          android:id="@+id/D" 
          android:layout_below="@+id/C" 
          android:layout_above="@+id/E"/> <!-- this one will fill any space left out after adding views A, B, C, and E --> 
      
      <AnyView 
          android:id="@+id/E" 
          android:layout_alignParentBottom="true"/> 
      
      
      </Relativelayout> 
      

      基本的にキーボードが表示されると、画面の下のアンカーが上に移動します。 android:layout_alignParentBottom="true"と言うと、これはその下のアンカーの真上にそのビューを維持します。

      しかし、他のビュー(A、B、C、D)に関する限り、それらはそのボトムアンカーに直接依存していません。だから、彼らは動かず、自分自身を調整しません。

      ちょっとだけ留意してください。このようなレイアウト(上から少し積み重ねたもの、下から少し積み重ねたもの)をレイアウトすると、可変の高さを持つ特定のビューが常に存在し、画面の高さの変化に合わせて調整されます。上記の例では、そのビューはDです。

    +0

    私のレイアウトを確認してください。実際に何を書いたのか分かりません。 –

    +0

    @ id/navigationBottomを下に固定していますので、キーボードが上がってもフッターが動かないようにしてください。いくらかのマージンや何かを与えてください。 –

    関連する問題