自定义Dialog使用CardView圆角外面还有一层方角
时间: 2023-07-11 08:41:07 浏览: 157
Android自定义Dialog实现通用圆角对话框
如果您想要在自定义Dialog中使用CardView,同时又想要CardView外面有一层方角,可以按照以下步骤进行操作:
1. 在自定义Dialog的布局文件中,使用一个FrameLayout作为根布局。
2. 在FrameLayout中添加一个CardView,设置CardView的圆角属性,如下所示:
```
<android.support.v7.widget.CardView
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="16dp"
app:cardCornerRadius="8dp"
app:cardBackgroundColor="@color/white"
app:cardElevation="4dp">
<!-- 在CardView中添加其他布局元素 -->
</android.support.v7.widget.CardView>
```
3. 在FrameLayout中再添加一个View,这个View设置为半透明的灰色,同时设置View的圆角属性和Margin属性,如下所示:
```
<View
android:id="@+id/bg_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="16dp"
android:background="@color/bg_gray"
android:alpha="0.8"
android:visibility="invisible"
android:clickable="true"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:layout_gravity="center"
android:padding="16dp"
android:clipToPadding="true"
android:elevation="4dp"
android:translationZ="4dp"
android:outlineProvider="background"
android:backgroundTint="@color/white"
android:backgroundTintMode="multiply"
android:foreground="?android:attr/selectableItemBackground"
android:foregroundGravity="center"
android:foregroundTint="@color/white"
android:foregroundTintMode="multiply"
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_centerInParent="true"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:layout_alignWithParentIfMissing="true" />
```
其中,bg_view的属性值需要根据您的实际需求进行调整。
4. 在自定义Dialog的Java代码中,设置bg_view的可见性,使其在Dialog显示时显示,隐藏时隐藏。同时也可以设置bg_view的点击事件,以便在用户点击背景时关闭Dialog。
```
public class MyDialog extends Dialog {
public MyDialog(Context context) {
super(context);
setContentView(R.layout.dialog_my);
// 获取bg_view
View bgView = findViewById(R.id.bg_view);
// 设置点击事件
bgView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
// 设置bg_view的可见性
bgView.setVisibility(View.VISIBLE);
}
}
```
这样,您就可以在自定义Dialog中使用CardView,并且在CardView外面有一层方角了。
阅读全文