Android 自定义Dialog使用模板
程序员文章站
2022-09-16 20:15:53
Dialog 很经常用到的一个控件,但大多时候系统默认的样式是不满足于项目使用的,故自定义了一套合适的Dialog模板方便日常使用。布局:
Dialog 很经常用到的一个控件,但大多时候系统默认的样式是不满足于项目使用的,故自定义了一套合适的Dialog模板方便日常使用。
布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:background="@drawable/image37"
android:layout_width="match_parent"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_height="140dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:paddingTop="15dp"
android:orientation="vertical">
<TextView
android:id="@+id/message"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:gravity="center"
android:lineSpacingExtra="3dp"
android:lineSpacingMultiplier="1.2"
android:textColor="#EDE7D1"
android:textSize="18dp"
tools:text="游戏已有最新版,请前往下载" />
<RelativeLayout
android:layout_marginTop="5dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/leftBtn"
android:layout_centerHorizontal="true"
android:layout_width="150dp"
android:layout_height="40dp"
android:background="@drawable/btn6"
tools:text="直接下载(推荐)"
android:textStyle="bold"
android:textColor="#fff"
android:textSize="16sp" />
<Button
android:id="@+id/rightBtn"
android:layout_width="90dp"
android:layout_height="30dp"
android:layout_alignBottom="@id/leftBtn"
android:layout_marginTop="20dp"
android:layout_toRightOf="@id/leftBtn"
android:background="#00000000"
android:text="其他下载"
android:textColor="#448DC7"
android:textSize="14sp" />
</RelativeLayout>
</LinearLayout>
</LinearLayout>
样式:
<style name="ATDialog" parent="android:style/Theme.Dialog">
<!--背景颜色及和透明程度-->
<item name="android:windowBackground">@android:color/transparent</item>
<!--是否去除标题 -->
<item name="android:windowNoTitle">true</item>
<!--是否去除边框-->
<item name="android:windowFrame">@null</item>
<!--是否浮现在activity之上-->
<item name="android:windowIsFloating">true</item>
<!--是否模糊-->
<item name="android:backgroundDimEnabled">true</item>
</style>
Dialog源码:
public class ATDialog extends Dialog {
//TODO 提示消失内容
private TextView DialogMessage ;
//TODO 确认和取消按钮
private Button okButton ,cancelButton;
//TODO 控件赋值
private String message;
private String okText,cancelText ;
public ATDialog(Context context) {
super(context, R.style.ATDialog);
}
//TODO 初始化设置
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.at_dialog);
//按空白处不能取消动画
setCanceledOnTouchOutside(false);
//初始化界面控件数据
refreshView();
//初始化界面控件的事件
initEvent();
}
//TODO 初始化控件内容
private void refreshView() {
DialogMessage = (TextView) findViewById(R.id.message);
okButton = (Button) findViewById(R.id.leftBtn);
cancelButton = (Button) findViewById(R.id.rightBtn);
//设置默认文本
if (!TextUtils.isEmpty(message)) {
DialogMessage.setText(message);
}else {
DialogMessage.setText("哈哈哈哈啊哈哈哈哈");
}
if (!TextUtils.isEmpty(okText)) {
okButton.setText(okText);
}else {
okButton.setText("确定");
}
if (!TextUtils.isEmpty(cancelText)) {
cancelButton.setText(cancelText);
}else {
cancelButton.setText("取消");
}
}
//TODO 设置监听
private void initEvent() {
//设置确定按钮被点击后,向外界提供监听
okButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if ( onClickBottomListener!= null) {
onClickBottomListener.onOKClick();
}
}
});
//设置取消按钮被点击后,向外界提供监听
cancelButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if ( onClickBottomListener!= null) {
onClickBottomListener.onCancelClick();
}
}
});
}
@Override
public void show() {
super.show();
refreshView();
}
/**
* 设置确定取消按钮的回调
*/
public OnClickBottomListener onClickBottomListener;
public ATDialog setOnClickBottomListener(OnClickBottomListener onClickBottomListener) {
this.onClickBottomListener = onClickBottomListener;
return this;
}
public interface OnClickBottomListener{
/**
* 点击确定按钮事件
*/
public void onOKClick();
/**
* 点击取消按钮事件
*/
public void onCancelClick();
}
public ATDialog setMessage(String message) {
this.message = message;
return this ;
}
public ATDialog setokText(String okText) {
this.okText = okText;
return this ;
}
public ATDialog setcancelText(String cancelText) {
this.cancelText = cancelText;
return this ;
}
}
使用:
private void ShowDialog(){
final ATDialog dialog = new ATDialog(MainActivity.this);
dialog.setMessage("游戏已有最新版,请前往下载")
.setokText("直接下载(推荐)")
.setcancelText("其他下载")
.setOnClickBottomListener(new ATDialog.OnClickBottomListener() {
@Override
public void onOKClick() {
dialog.dismiss();
Toast.makeText(MainActivity.this, "点击了按钮1", Toast.LENGTH_SHORT).show();
}
@Override
public void onCancelClick() {
dialog.dismiss();
Toast.makeText(MainActivity.this, "点击了按钮2", Toast.LENGTH_SHORT).show();
}
}).show();
}
献上DemoDemo地址:https://download.csdn.net/download/weixin_40770051/12660634
献上DemoDemo地址:https://download.csdn.net/download/weixin_40770051/12660634
参阅致谢:https://www.jianshu.com/p/25272f045d78
参阅致谢:https://www.jianshu.com/p/9fff573724de
本文地址:https://blog.csdn.net/weixin_40770051/article/details/107578905
下一篇: python3安装过程
推荐阅读
-
Android 自定义dialog的实现代码
-
Android自定义Dialog内部透明、外部遮罩效果
-
Android自定义滑动解锁控件使用详解
-
C#_Excel数据读取与写入_自定义解析封装类_支持设置标题行位置&使用excel表达式收集数据&单元格映射&标题映射&模板文件的参数数据替换(第二版-增加深度读取和更新功能)
-
Android studio 使用技巧(1)----文件模板(File Templates)
-
Android自定义对话框Dialog
-
Android中自定义对话框(Dialog)的实例代码
-
Android 去掉自定义dialog的白色边框的简单方法
-
Android 自定义Dialog使用模板
-
在Word2010中使用自定义图表模板创建图表