ツールバーとその中にrecyclerViewを持つフラグメントがあります。
RecyclerViewにダミーデータを入力してから、表示しようとしています。何らかの理由で、recyclerViewの最後の要素がカットオフになっています。
これはフラグメントのXMLです。
<?xml version="1.0" encoding="utf-8"?>
<Android.support.design.widget.CoordinatorLayout
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"
Android:background="@color/background_1"
Android:fitsSystemWindows="true">
<Android.support.design.widget.AppBarLayout
Android:id="@+id/appbar_layout"
Android:layout_width="match_parent"
Android:layout_height="@dimen/height_of_app_bar"
Android:fitsSystemWindows="true"
Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<Android.support.design.widget.CollapsingToolbarLayout
Android:id="@+id/collapsing_toolbar"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fitsSystemWindows="true"
app:contentScrim="@color/primary"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<ImageView
Android:id="@+id/backdrop"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fitsSystemWindows="true"
Android:scaleType="centerCrop"
Android:src="@drawable/placeholder_rect_header"
app:layout_collapseMode="parallax"/>
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
</Android.support.design.widget.CollapsingToolbarLayout>
</Android.support.design.widget.AppBarLayout>
<Android.support.v7.widget.RecyclerView
Android:id="@+id/simpleList"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
</Android.support.design.widget.CoordinatorLayout>
リストの項目は本当にシンプルなものです:
<?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="200dp"
Android:background="@color/background_1"
Android:orientation="horizontal"
Android:padding="@dimen/space_for_a_bit_of_air">
<ImageView
Android:id="@+id/album_cover"
Android:layout_width="100dp"
Android:layout_height="100dp"
Android:layout_gravity="center_vertical"
Android:scaleType="fitXY"
Android:src="@drawable/placeholder_album_cover"/>
<LinearLayout
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center_vertical"
Android:layout_marginLeft="@dimen/space_for_distinguishing_stuff"
Android:orientation="vertical">
<TextView
Android:id="@+id/album_title"
style="@style/titleText"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="@string/sample_text_c"/>
<TextView
Android:id="@+id/album_year"
style="@style/subtitleText"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:text="@string/sample_text_a"/>
</LinearLayout>
</LinearLayout>
私は今リストの最後にいますが、最後の要素はまだカットオフに見えます。
Googleライブラリの2015-09-23現在の最新バージョン23.0.1(つまり、com.Android.support:recyclerview-v7:23.0.1)とbuild.gradleで次の構成を使用しています。
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
multiDexEnabled true// Enabling multidex support
}
私はこの問題に夢中になるので、どんな助けも大歓迎です:(
わかりました、コードを必要最低限のものにクリーンアップし、複雑さを取り除いた後、問題が見つかりました。それは、間違ったフラグと欠落または追加の属性の組み合わせでした。以下は、Android 4.xおよび5.xの両方で正常に機能します。
<?xml version="1.0" encoding="utf-8"?>
<Android.support.design.widget.CoordinatorLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="@color/background_1"
Android:fitsSystemWindows="true">
<Android.support.design.widget.AppBarLayout
Android:id="@+id/appbar_layout"
Android:layout_width="match_parent"
Android:layout_height="@dimen/height_of_app_bar"
Android:fitsSystemWindows="true">
<Android.support.design.widget.CollapsingToolbarLayout
Android:id="@+id/collapsing_toolbar"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fitsSystemWindows="true"
app:collapsedTitleTextAppearance="@style/Title.collapsed"
app:contentScrim="@color/primary"
app:expandedTitleMarginStart="48dp"
app:expandedTitleTextAppearance="@style/Title.Expanded"
app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed">
<ImageView
Android:id="@+id/backdrop"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:fitsSystemWindows="true"
Android:scaleType="centerCrop"
Android:src="@drawable/artistic_4"
app:layout_collapseMode="parallax"/>
<View
Android:layout_width="match_parent"
Android:layout_height="@dimen/height_of_app_bar"
Android:background="@drawable/gradient"/>
<Android.support.v7.widget.Toolbar
Android:id="@+id/toolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"/>
</Android.support.design.widget.CollapsingToolbarLayout>
</Android.support.design.widget.AppBarLayout>
<Android.support.v7.widget.RecyclerView
Android:id="@+id/simpleList"
style="@style/genericRecyclerView"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:listitem="@layout/item_discography_album"/>
</Android.support.design.widget.CoordinatorLayout>
一言で言えば、Android:fitsSystemWindows = "true"は、coordinatorLayout、AppBarLayout、theCollapsingToolbarLayoutにのみ存在する必要があります(これらはAndroid 5.xの画面に基づいて調整したいものです) )、app:layout_scrollFlagsを "scroll | enterAlways | enterAlwaysCollapsed"に設定し、ツールバーの高さ、actionBarの高さを設定する必要があります。各広告申込情報で。
RecyclerView
の高さを"wrap_content"
に変更し、AppBarLayout
の高さをマージン下部として追加してみてください。
<Android.support.v7.widget.RecyclerView
Android:id="@+id/simpleList"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_marginBottom="@dimen/height_of_app_bar"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
リスト項目の切り取られた部分は、AppBarLayout
の高さです。
これは私のために働いた。 recyclerViewの高さと幅の両方を0dpに設定します
<Android.support.v7.widget.RecyclerView
Android:id="@+id/rv_materias"
Android:layout_width="0dp"
Android:layout_height="0dp"
Android:layout_marginTop="20dp"
Android:background="@color/secondaryLightColor"
app:layout_constraintBottom_toTopOf="@id/bottom_navigation"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/guideline6"></Android.support.v7.widget.RecyclerView>
RelativeLayoutをRecycerViewの親として使用してください。
ConstraintLayout内でRecyclerViewを使用しているときに、同じ問題が発生しました(リストからViewHolder要素全体が欠落することさえありました)。 Sila Siebert が述べたように、RecyclerViewのlayout_widthとlayout_heightをゼロに設定することは、トリックを行いました。 XMLテキストが0dpを示している間、少し後にエディターがジャンプして「match_constraints」と言うので、少し混乱します。混乱させないでください、動作するはずです。
RecyclerViewを含むダイアログフラグメントがあります。最初の全体的な制約レイアウトでは、上記のソリューションはどれも機能しなかったため、問題なく機能する線形レイアウトに変更しました。このレイアウトには、ツールバーとrecyclerviewが含まれています。
可能なサイトのほとんどから利用可能なすべてのオプションを試しましたが、解決策が得られませんでした。次に、下のパディングを使用できますか?そして、はい、それは私のために働いています。
私はあなたにコードを共有しています。高さ、幅、パディング以外の属性は必要ありません。
Android:paddingBottom = "?attr/actionBarSize"
<Android.support.v7.widget.RecyclerView
Android:id="@+id/your id name"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:paddingBottom="?attr/actionBarSize"
app:layout_constraintTop_toBottomOf="@+id/your field" />
これが期待どおりに機能しているので、次のことを試してください:
<Android.support.v7.widget.RecyclerView
Android:id="@+id/container"
Android:layout_width="match_parent"
Android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/layout_header">
</Android.support.v7.widget.RecyclerView>
layout_height
as wrap_content
RelativeLayout
とRecyclerView
の両方に対して
FrameLayout
を作成し、RecycerView
を入れてmatch_parent
width
とheight
の両方。 framelayout
のサイズは自由に設定できます。
<RelativeLayout
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_marginTop="150dp"
Android:layout_marginStart="@dimen/_20"
Android:layout_marginEnd="@dimen/_20"
app:layout_constraintTop_toBottomOf="@+id/linearLayout">
<Android.support.v7.widget.RecyclerView
Android:id="@+id/recycler_Bookingagain"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_marginTop="8dp"
Android:focusableInTouchMode="true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent" />
</RelativeLayout>