【举例】Android自定义Dialog——做出“确定/取消”的选择
来源:互联网 发布:英语语法 知乎 编辑:程序博客网 时间:2024/06/10 14:47
1、自定义Dialog的界面
<--!dialog_yesorno_for_permission.xml--><?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rootView" android:layout_width="250dp" android:layout_height="170dp" android:background="@drawable/diabg_bkg" android:orientation="vertical" > <RelativeLayout android:id="@+id/top_rl" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_above="@+id/bottomo_ll" > <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:gravity="center_horizontal|center_vertical" android:text="请授予相关权限,否则程序无法运行。\n\n点击确定。\n点击取消。\n" android:textColor="@color/black" /> </RelativeLayout> <View android:layout_width="match_parent" android:layout_height="1dp" android:layout_below="@+id/top_rl" android:layout_marginBottom="10dp" android:background="@color/lightgrey" /> <RelativeLayout android:id="@+id/bottomo_ll" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:orientation="horizontal"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:id="@+id/acceptbtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="12dp" android:layout_weight="1" android:background="@null" android:text="确定" android:textColor="@color/black" android:textSize="18sp" /> <View android:layout_width="1dp" android:layout_height="match_parent" android:background="@color/lightgrey" /> <Button android:id="@+id/refusebtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="6dp" android:layout_marginTop="12dp" android:layout_weight="1" android:background="@null" android:text="取消" android:textColor="@color/black" android:textSize="18sp" /> </LinearLayout> </RelativeLayout></RelativeLayout>
2. Dialog的形状背景等设置
<--!diabg_bkg.xml--><?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="@android:color/white" /> <corners android:radius="16dp" /></shape>
3.关于该Dialog的Java类文件
import android.app.Dialog;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.Button;import android.widget.TextView;public class YesOrNoDialog extends Dialog { private Button positiveButton, negativeButton; private TextView message; private YesOrNoDialogCallback callback; //定义“确定/取消”的操作 public enum ClickedButton {POSITIVE, NEGATIVE} public YesOrNoDialog(Context context) { super(context, R.style.Dialog_Dim); setCustomDialog(); getWindow().setLayout((int) (AppConstant.SCRRENWIDTH * 0.7), (int) (AppConstant.SCREENHEIGHT * 0.3)); } public void setCallback(YesOrNoDialogCallback callback) { this.callback = callback; } //具体的设置Dialog private void setCustomDialog() { View mView = LayoutInflater.from(getContext()).inflate(R.layout.dialog_yesorno_for_permission, null); message = (TextView) mView.findViewById(R.id.title); positiveButton = (Button) mView.findViewById(R.id.acceptbtn); negativeButton = (Button) mView.findViewById(R.id.refusebtn); positiveButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { callback.onClickButton(ClickedButton.POSITIVE,""); } }); negativeButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { callback.onClickButton(ClickedButton.NEGATIVE,""); } }); //ViewGroup.LayoutParams params=new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); super.setContentView(mView); } @Override public void setContentView(int layoutResID) { } @Override public void setContentView(View view, ViewGroup.LayoutParams params) { } @Override public void setContentView(View view) { } public void setMeesage(String mes) { message.setText(mes); } //定义回调的接口 public interface YesOrNoDialogCallback { public void onClickButton(ClickedButton button,String message); }}
4.使用Dialog
YesOrNoDialog ynDialog = new YesOrNoDialog(mContext); ynDialog.setMeesage("请授予相关权限,否则程序无法运行。\n\n点击确定,重新授予权限。\n点击取消,立即终止程序。\n"); ynDialog.setCallback(new YesOrNoDialog.YesOrNoDialogCallback() { @Override public void onClickButton(YesOrNoDialog.ClickedButton button, String message) { if (button == YesOrNoDialog.ClickedButton.POSITIVE) { ynDialog.dismiss(); .... //balabala } else if (button == YesOrNoDialog.ClickedButton.NEGATIVE) { ynDialog.dismiss(); .... //balabala } } }); //显示该Dialog,不要忘记 dialog.show();
抓住Demo一只:
为了方便以后调用,本人已经将上述Dialog封装到了.aar文件中。以后调用时,只需要导入第三方包即可。
https://github.com/shanxu100/GUtils
欢迎大家补充交流。
0 0
- 【举例】Android自定义Dialog——做出“确定/取消”的选择
- 【举例】Android自定义Dialog——选择一个RadioButton
- 28-Dialog点击选择确定,取消,显示在TextView中
- 一个自定义dialog提供确定和取消按钮的回调接口
- Android开发,禁止AlertDialog点击确定或者取消都自动关闭dialog的情况
- android 日期选择框 左边取消按钮,右边确定按钮
- Android自定义系列——通用的自定义Dialog
- Android 自定义的Dialog,点击确定按钮,让其根据条件判断消失与否
- android Dialog的自定义
- 自定义Android的Dialog
- Android 自定义的Dialog
- android 自定义的dialog
- 简单dialog---带输入框/确定/取消
- 【Dialog】7种形式的Android Dialog举例
- Android Dialog使用举例
- Android Dialog使用举例
- Android Dialog 使用举例
- Android Dialog使用举例
- 线程池的使用以及其工具类的封装
- group by
- codevs1052 地鼠游戏 贪心
- 关于C语言的副作用和序列点~
- 雪碧图(css sprite)
- 【举例】Android自定义Dialog——做出“确定/取消”的选择
- 正则表达式工作总结
- 图片流量节省大杀器:基于腾讯云CDN的sharpP自适应图片技术实践
- 延时函数
- Codeforces 785C-Anton and Fairy Tale
- Android CalendarView 使用
- js表单验证,并显示红色警告
- 【POJ2594】Treasure Exploration 宝藏勘探 二分图最大匹配
- 树莓派安装系统in linux(开启ssh默认启动)