Grid数に合わせてViewの位置がFrameLayoutの幅を超えたとき
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:background="#ccc" android:layout_width="100dp" android:layout_height="100dp"> <ImageView android:layout_width="100dp" android:layout_height="100dp" android:id="@+id/bg_color" android:background="#f00" /> <TextView android:id="@+id/textId" android:padding="3dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20dp" android:textColor="#fff" android:layout_gravity="bottom" android:text="0"/> <TextView android:id="@+id/textName" android:padding="3dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20dp" android:textColor="#fff" android:layout_gravity="bottom|right" android:text="name"/> </FrameLayout>
上記のようにFrameLayout
のlayout_width
を指定して
mRecyclerView.setLayoutManager(new GridLayoutManager(this, 3));
と列数3のGridLayoutManager
でセットすると
上のように灰色の背景を見ていたりして、FrameLayout
が伸びていることが分かる。
この場合、1つLayout要素でさらに包むと直る。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" > <FrameLayout android:background="#ccc" android:layout_width="100dp" android:layout_height="100dp"> <ImageView android:layout_width="100dp" android:layout_height="100dp" android:id="@+id/bg_color" android:background="#f00" /> <TextView android:id="@+id/textId" android:padding="3dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20dp" android:textColor="#fff" android:layout_gravity="bottom" android:text="0"/> <TextView android:id="@+id/textName" android:padding="3dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20dp" android:textColor="#fff" android:layout_gravity="bottom|right" android:text="name"/> </FrameLayout> </LinearLayout>