对此进行了相当多的研究,但我对Layer list的经验仍然不足。这是我的xml:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="10dip"/>
<padding
android:bottom="2dip"
android:left="8dip"
android:right="8dip"
android:top="2dip"/>
</shape>
</item>
<item
android:id="@+id/dialog_bg">
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFF"/>
<stroke
android:width="16dip"
android:color="#FFFFFF"/>
<padding
android:bottom="2dip"
android:left="8dip"
android:right="8dip"
android:top="2dip"/>
</shape>
</item>
</layer-list>
我对如何做到这一点有正确的想法吗?
我想要使用这个java方法:
getDialog().getWindow().setBackgroundDrawableResource(R.drawable.rounded_corners_dialog);
但是我将如何改变它的颜色,稍后在代码中?
谢谢,
Ť
答案 0 :(得分:2)
您可以将CardView
作为自定义DialogFragment布局的父容器。这是一个简单的例子:
custom_dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
app:cardCornerRadius="8dp"
app:cardElevation="10dp"
app:cardUseCompatPadding="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
//Put all your views here
</LinearLayout>
</android.support.v7.widget.CardView>
现在,您的课程会延伸DialogFragment
覆盖onCreateDialog
,如下所示:
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
return dialog;
}
现在,您可以创建一个圆角,然后可以更改CardView
的背景颜色。试试吧:))