标签:
Android自带的dialog往往不能够满足我们设计的要求,所以有的时候需要自己自定义Dialog。
例如,以下介绍如下的自定义Dialog:
思路:
1.自定义一个Dialog的Style;
2.编写自定义的Dialog类,继承自Dialog;
3.使用自定义的Dialog;
具体实现的步骤:
1.定义Style:
- <style name="CustomDialog" parent="android:style/Theme.Dialog">
- <item name="android:windowFrame">@null</item>
- <item name="android:windowIsFloating">true</item>
- <item name="android:windowNoTitle">true</item>
- <item name="android:windowBackground">@android:color/transparent</item>
- <item name="android:backgroundDimEnabled">true</item>
- </style>
其中的属性意思如下:
<item name="android:windowFrame">@null</item> :Dialog的windowFrame框为无
<item name="android:windowIsFloating">true</item>:是否浮现在activity之上
<item name="android:windowNoTitle">true</item>:是否有标题栏
<item name="android:windowBackground">@android:color/transparent</item>:设置Dialog的背景
<item name="android:backgroundDimEnabled">true</item>:背景是否模糊显示
2.编写自定义的Dialog类:
a)首先需要定义我们所要显示的Dialog布局文件:/ layout / view_dialog.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_marginLeft="15dp"
- android:layout_marginRight="15dp"
- android:background="@drawable/defaulting_dialog_bg"
- android:gravity="center"
- android:orientation="vertical" >
-
- <TextView
- android:id="@+id/id_dialog_content"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center"
- android:padding="30dp"
- android:textColor="@color/black"
- android:textSize="18sp" />
-
- <include layout="@layout/sub_line" />
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="50dp"
- android:gravity="center"
- android:orientation="horizontal" >
-
- <Button
- android:id="@+id/id_dialog_no"
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:background="@android:color/transparent"
- android:gravity="center"
- android:textColor="@color/black"
- android:textSize="16sp" />
-
- <ImageView
- android:layout_width="1.0px"
- android:layout_height="match_parent"
- android:layout_marginBottom="4dp"
- android:layout_marginTop="4dp"
- android:background="@color/grey_line" />
-
- <Button
- android:id="@+id/id_dialog_yes"
- android:layout_width="0dp"
- android:layout_height="match_parent"
- android:layout_weight="1"
- android:background="@android:color/transparent"
- android:gravity="center"
- android:textColor="@color/black"
- android:textSize="16sp" />
- </LinearLayout>
-
- </LinearLayout>
其中的水平分割线:/ layout / sub_line.xml
- <?xml version="1.0" encoding="utf-8"?>
- <ImageView xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="1px"
- android:background="@color/grey_line" >
- </ImageView>
其中涉及到的颜色:/ res / values / colors.xml
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
-
- <color name="black">#000000</color>
- <color name="grey_line">#e0e0e0</color>
-
- </resources>
b)写完布局文件,就可以在java中定义自定义的Dialog类了:
详细说明都在代码中:
3.使用自定义的Dialog:
- final CustomDialog loginDialog = new CustomDialog(getActivity());
- loginDialog.setContent("您还没有登陆,不能邀请好友。是否立即登陆邀请好友?");
- loginDialog.setYesBtnText("登陆");
- loginDialog.setNoBtnText("暂不");
- loginDialog.setYesBtnTextColor(getResources().getColor(R.color.black));
- loginDialog.setCustomOnClickListener(new OnCustomDialogListener() {
- @Override
- public void setYesOnClick() {
-
- }
-
- @Override
- public void setNoOnClick() {
- loginDialog.dismiss();
- }
- });
- loginDialog.show();
- }
自定义Dialog
标签:
原文地址:http://www.cnblogs.com/dubo-/p/5573045.html