如何创建仅在上半部分或下半部分具有圆角的布局?
How to create a layout with rounded corners on only the top or bottom half?
我正在尝试将行项目添加到 RecyclerView 中,如下所示:
视图布局有2个版本;一个在上半部分带有图像,一个仅包含文本。一些事情使这个布局难以创建;
- 图像仅在顶部变圆
- textview 下半部分仅在底部呈圆形
- 如果 ImageView 消失了,那么 textview 确实有圆顶角。
我更喜欢只有一行布局并在 XML 中设计。这可能吗,还是我需要在代码中创建此布局?
您需要创建一个drawable,在drawable中设置corners值,并将drawable设置为您想要顶部圆角的视图的背景。
这是一个可用的可绘制对象:
<!-- res/drawable/rounded_edittext.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
>
<corners android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
<solid android:color="#ABC123"/>
</shape>
您可以使用 material cardview 实现此目的。这是完整布局文件的 xml 代码:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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">
<com.google.android.material.card.MaterialCardView
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="10dp"
app:cardCornerRadius="30dp"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#406cca"
android:visibility="visible" />
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#fb7500" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</androidx.constraintlayout.widget.ConstraintLayout>
请记住,如果图像不存在,只需在代码中将 recyclerview 中该特定图像视图的可见性设置为 View.GONE。
我希望你明白了。如有任何疑问,请发表评论!
这里是这段代码的图片:
对于图片持有者使用此 library
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/imgUser"
android:layout_width="match_parent"
android:layout_height="100dp"
app:riv_corner_radius_top_left="5dp"
app:riv_corner_radius_top_right="5dp"/>
我正在尝试将行项目添加到 RecyclerView 中,如下所示:
视图布局有2个版本;一个在上半部分带有图像,一个仅包含文本。一些事情使这个布局难以创建;
- 图像仅在顶部变圆
- textview 下半部分仅在底部呈圆形
- 如果 ImageView 消失了,那么 textview 确实有圆顶角。
我更喜欢只有一行布局并在 XML 中设计。这可能吗,还是我需要在代码中创建此布局?
您需要创建一个drawable,在drawable中设置corners值,并将drawable设置为您想要顶部圆角的视图的背景。 这是一个可用的可绘制对象:
<!-- res/drawable/rounded_edittext.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
>
<corners android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
<solid android:color="#ABC123"/>
</shape>
您可以使用 material cardview 实现此目的。这是完整布局文件的 xml 代码:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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">
<com.google.android.material.card.MaterialCardView
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_margin="10dp"
app:cardCornerRadius="30dp"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#406cca"
android:visibility="visible" />
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#fb7500" />
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
</androidx.constraintlayout.widget.ConstraintLayout>
请记住,如果图像不存在,只需在代码中将 recyclerview 中该特定图像视图的可见性设置为 View.GONE。
我希望你明白了。如有任何疑问,请发表评论!
这里是这段代码的图片:
对于图片持有者使用此 library
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/imgUser"
android:layout_width="match_parent"
android:layout_height="100dp"
app:riv_corner_radius_top_left="5dp"
app:riv_corner_radius_top_right="5dp"/>