しかし、どういうわけか、画像はアスペクト比を維持していません。
リサイクラビューを作成するためのxmlファイルとコードは次のとおりです。
item.xml
<?xml version="1.0" encoding="utf-8"?>
<Android.support.constraint.ConstraintLayout 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"
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:padding="10dp">
<ImageView
Android:id="@+id/image"
Android:layout_width="0dp"
Android:layout_height="0dp"
Android:adjustViewBounds="true"
Android:scaleType="centerCrop"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintDimensionRatio="16:9"
tools:src="@drawable/ic_logo" />
<TextView
Android:id="@+id/title"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="@+id/image"
Android:textColor="@color/white"
tools:text="SAMPLE"
Android:paddingBottom="10dp"
Android:layout_margin="5dp"/>
</Android.support.constraint.ConstraintLayout>
activity.xml
<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"
Android:layout_margin="10dp">
<Android.support.v7.widget.RecyclerView
Android:id="@+id/recycler_view"
Android:layout_marginTop="5dp"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_alignParentStart="true" />
</RelativeLayout>
ビュー全体を生成するコード:
adapter = new SampleAdapter(list);
StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL);
sampleRecyclerView.setLayoutManager(manager);
sampleRecyclerView.setAdapter(adapter);
各アイテムの幅は細かく設定され、各列スパンの幅に適合します。しかし、高さは維持されず、非常に小さいです。
誰か助けてくれませんか?
ありがとう
画像では、他の寸法が比率を満たすように調整されているときに、制約と一致する寸法を指定できます。 寸法拘束 については、ドキュメントの「比率」というセクションを参照してください。
両方のディメンションがMATCH_CONSTRAINT(0dp)に設定されている場合は、比率を使用することもできます。この場合、システムは最大の寸法を設定し、すべての制約を満たし、指定されたアスペクト比を維持します。別の側面に基づいて特定の側面を拘束する。幅または高さをそれぞれ制約するために、WまたはHを事前に追加できます。たとえば、1つの寸法が2つのターゲットによって制約されている場合(たとえば、幅が0dpで親を中心とする)、次のように追加することで、制約する側を指定できます。カンマで区切られた、比率の前の文字W(幅を制限する場合)またはH(高さを制限する場合):
<Button Android:layout_width="0dp"
Android:layout_height="0dp"
app:layout_constraintDimensionRatio="H,16:9"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
だから、あなたの場合は、app:layout_constraintDimensionRatio="H,16:9"
を試してみます。
また、Android:scaleType="centerCrop"
やadjustViewBounds
は必要ないと思いますが、実際に試してみる必要があります。