2016-09-29 4 views
3

私はRecyclerViewの上にtitleTextを含む線形レイアウトを含むダイアログフラグメントを持っています。そして、一番下にはrecyclerViewの下にボタンがあります。RecyclerViewの最大高さを設定する

recyclerViewは、アダプターが設定する項目の数に基づいて展開または折りたたまれるため、ボタンが切り捨てられ、画面上に表示されなくなることがあります。

私の質問は、下にボタンを隠すことなく、recyclerViewの最大高さを設定する方法があるかどうかです。また、単にrecyclerViewにアイテムが含まれていない場合にだけ、ビューにランダムな高さを与えたいだけでなく、空白のセクションにすることもできます。

あなたがこの問題に遭遇した場合、これをどのように解決したか教えてください。ありがとう!

答えて

4

更新済み これはレイアウトの重みを使用して簡単に達成できます。ここに例があります:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:text="Title" 
      android:textSize="21sp"/> 

     <android.support.v7.widget.RecyclerView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:paddingBottom="30dp"> 
     </android.support.v7.widget.RecyclerView> 

    </LinearLayout> 

    <Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom" 
     android:text="Submit"/> 
</FrameLayout> 

タイトルとRecyclerViewは内容に応じてコンテンツをラップし、ボタンは常に下に表示されます。

+0

このソリューションは、空の場合でも圧縮する必要がある場合でも、ビューの80%をrecyclerViewに配信するので、layoutHeightパラメータを設定することと基本的に同じですか? – jensiepoo

+0

更新いただきありがとうございます!これはクールな解決策です。ただし、本質的にこのボタンは、recyclerView項目の上にオーバーレイされます。 – jensiepoo

+0

リサイクラービューにパディングボトムを追加するだけです。 –

0

私はRelativeLayoutを使用することをお勧めします。あなたのような場合のビューの配置を処理するので、実際にメインデザインに集中できます。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <TextView 
     android:id="@+id/title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:text="Some title" /> 
    <android.support.v7.widget.RecyclerView 
     android:id="@+id/recyclerView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@+id/title" 
     android:layout_above="@+id/button"/> 
    <Button 
     android:id="@+id/button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:gravity="center"/> 
</RelativeLayout> 

上記のXMLコードは、必要なもののスケルトンコードです。マージンとディメンションを追加して間隔を制御できます。しかし、どのような場合でも(あなたが負のマージンを提供するまで)、あなたの意見は互いに重なり合うことはありません。

RelativeLayoutを使用しての主なトリックは アンドロイドのようなXMLタグを使用する機能である:layout_belowやアンドロイド:layout_aboveやアンドロイド:layout_start やアンドロイド:完全にあなたのビューが希望 道を揃えlayout_end。

関連する問題