] 通过FramentDialog实现 Android 4.0风格的通用 dialog,你怎么看?

本文详细介绍了如何实现一个退出对话框,并提供了相应的代码片段。包括对话框的基本布局、内容展示、按钮交互以及对话框的显示方式。通过实例演示了如何在Android应用中灵活运用对话框来增强用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

device-2012-12-20-210910.png 
主界面

?
代码片段,双击复制
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<? xml version = "1.0" encoding = "UTF-8" ?>
< LinearLayout
        android:orientation = "vertical"
        android:background = "#FFFFFF"
        android:layout_width = "294.0dip"
        android:layout_height = "250.0dip"
        xmlns:android = "http://schemas.android.com/apk/res/android" >
        < include layout = "@layout/common_dialog_title" />
        < RelativeLayout
                android:gravity = "center"
                android:orientation = "vertical"
                android:layout_width = "fill_parent"
                android:layout_height = "90.0dip"
                android:layout_weight = "100.0"
                android:layout_gravity = "center" >
                < TextView
                        android:paddingLeft = "5dip"
                        android:id = "@+id/common_dialog_content_tv"
                        android:layout_below = "@+id/verify_imageView"
                        android:layout_width = "fill_parent"
                        android:layout_height = "90.0dip"
                        android:layout_marginLeft = "4.0dip"
                        android:layout_marginTop = "5.0dip"
                        android:layout_marginRight = "4.0dip"
                        android:layout_marginBottom = "4.0dip"
                        android:textColor = "#000"
                        android:singleLine = "true"
                        android:text = "确实要退出吗?"
                        android:textSize = "18dip" />
        </ RelativeLayout >
        < include
                android:layout_width = "fill_parent"
                android:layout_height = "wrap_content"
                android:layout_weight = "1.0"
                layout = "@layout/common_dialog_bottom_bar" />
</ LinearLayout >


title

?
代码片段,双击复制
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<? xml version = "1.0" encoding = "UTF-8" ?>
< RelativeLayout
        android:layout_width = "fill_parent"
        android:layout_height = "50dip"
        xmlns:android = "http://schemas.android.com/apk/res/android" >
        < TextView
                android:textSize = "20dip"
                android:textStyle = "bold"
                android:textColor = "#EE000000"
                android:ellipsize = "marquee"
                android:id = "@+id/common_dialog_title_text"
                android:layout_width = "wrap_content"
                android:layout_height = "wrap_content"
                android:layout_marginLeft = "5dip"
                android:singleLine = "true"
                android:layout_centerVertical = "true"
                android:paddingLeft = "3dip" />
        < View
                android:id = "@+id/common_dialog_divider_line"
                android:background = "#aa888888"
                android:layout_width = "fill_parent"
                android:layout_height = "2.0px"
                android:layout_alignParentBottom = "true" />
</ RelativeLayout >

foot
?
代码片段,双击复制
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<? xml version = "1.0" encoding = "UTF-8" ?>
< LinearLayout
        android:orientation = "vertical"
        android:id = "@+id/dialog_bottom_bar"
        android:layout_width = "fill_parent"
        android:layout_height = "50.0dip"
        xmlns:android = "http://schemas.android.com/apk/res/android" >
        < View
                android:background = "#aacccccc"
                android:layout_width = "fill_parent"
                android:layout_height = "2.0px" />
        < LinearLayout
                android:orientation = "horizontal"
                android:layout_width = "fill_parent"
                android:layout_height = "wrap_content" >
                < Button
                        android:textSize = "18.0dip"
                        android:id = "@+id/common_dialog_btn_ok"
                        android:layout_width = "fill_parent"
                        android:layout_height = "wrap_content"
                        android:layout_margin = "4.0dip"
                        android:text = "确认"
                        android:layout_weight = "1.0"
                        style = "@style/Dialog.OKButton" />
                < View
                        android:background = "#aacccccc"
                        android:layout_width = "2.0px"
                        android:layout_height = "fill_parent" />
                < Button
                        android:textSize = "18.0dip"
                        android:id = "@+id/common_dialog_btn_cancel"
                        android:layout_width = "fill_parent"
                        android:layout_height = "wrap_content"
                        android:layout_margin = "4.0dip"
                        android:text = "取消"
                        android:layout_weight = "1.0"
                        style = "@style/Dialog.Button" />
        </ LinearLayout >
</ LinearLayout >


代码
?
代码片段,双击复制
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
package com.su.doubanrise.fragment;
 
import com.su.doubanrise.MailEditActivity;
import com.su.doubanrise.MainActivity;
import com.su.doubanrise.R;
import com.su.doubanrise.R.id;
import com.su.doubanrise.R.layout;
import com.su.doubanrise.util.FileDownLoader;
import com.su.doubanrise.util.MLog;
import com.su.doubanrise.widget.AsyncImageLoader;
 
import android.R.raw;
import android.content.Context;
import android.graphics.drawable.Drawable;
 
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
 
public class ExitDialog extends DialogFragment implements View.OnClickListener {
 
        Context context;
        private TextView content_tv;
        private TextView title_tv;
        private String content = "确实要离开吗?" ;
        private String title = "确认" ;
 
        public ExitDialog(String content_tv, String title) {
                super ();
                this .content = content_tv;
                this .title = title;
        }
 
        public ExitDialog() {
                super ();
 
        }
 
        /**
          * 也可以在外部调用
          *
          * @param title
          * @param content
          */
        public void setDialog(String title, String content) {
                title_tv.setText(title);
                content_tv.setText(content);
        }
 
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super .onCreate(savedInstanceState);
               setStyle(0, R.style.MyDialogStyle);
        }
 
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                        Bundle savedInstanceState) {
                context = getActivity();
                View view = inflater.inflate(R.layout.common_dialog, null );
 
                Button common_dialog_btn_ok = (Button) view
                                .findViewById(R.id.common_dialog_btn_ok);
                Button common_dialog_btn_cancel = (Button) view
                                .findViewById(R.id.common_dialog_btn_cancel);
                title_tv = (TextView) view.findViewById(R.id.common_dialog_title_text);
                content_tv = (TextView) view
                                .findViewById(R.id.common_dialog_content_tv);
                setDialog(title, content);
                common_dialog_btn_cancel.setOnClickListener( this );
                common_dialog_btn_ok.setOnClickListener( this );
                return view;
        }
 
        @Override
        public void onClick(View v) {
 
                switch (v.getId()) {
 
                case R.id.common_dialog_btn_ok:
                        ((MainActivity) context).finish();
                        this .dismiss();
                        break ;
 
                default :
                        this .dismiss();
                        break ;
                }
 
        }
}


sytle

<style name="MyDialogStyle" parent="@android:Theme.Dialog">
		<item name="android:windowFrame">@null</item>
		<item name="android:windowNoTitle">true</item>
		<item name="android:windowIsFloating">true</item>
		<item name="android:windowContentOverlay">@null</item>
		<item name="android:background">@android:color/transparent</item>
		<item name="android:windowBackground">@android:color/transparent</item>
	</style>




启动方式


ExitDialog exitDialog = new ExitDialog();
                exitDialog.show(getSupportFragmentManager(), "");


主要需要继承FragmentActivity
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值