android dialog自定义实例详解
时间:2022-03-15 20:29:22
本人工作有一个月多了。对于android很多东西,都有了新的了解或者说真正的掌握。为了让更多的像我这样的小白少走弯路,所以我会坚持将我在工作中遇到的一些比较令我印象深刻的知识点整合出来给大家(顺序是按照我工作到现在的时间来制作的,其实也是想给自己一个记录吧。记录自己一路走来以及以后的路,
至少我想找到曾经的记录都有了)。
第一个需求:简单的自定义dialog
需求:创建一个dialog,该dialog具备以下功能:
1.有一个窗口可以显示文章
2.根据需求显示
1)点击同意(不同意),触发对应的事件(同意的事件会弹出一个Toast,不同意则会关闭程序)
2)点击关闭,关闭dialog
1.在main.xml文件中设定一个按钮,点击会弹出dialog
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/hello_world"
android:id="@+id/btn"
android:background="@drawable/sl_btn_red" />
</RelativeLayout>
2.创建dialog的内容布局,布局中设定了使用相对布局设定了三个按钮,其中两个一起出现(同意和不同意),另外一个单独出现(关闭)默认是两个出现
private TextView btnClose = null;
private TextView btnAgree = null;
private TextView btnDisagree = null;
private WebView mWebView = null;
public MyDialog(Context context) {
super(context, R.style.item_tnc_dialog);
setCancelable(false); // 阻止返回键的响应
setContentView(R.layout.dialog_view);
getWindow().setLayout(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT);
setUpView();
}
private void setUpView() {
mWebView = (WebView) findViewById(R.id.item_tnc_dialog_webview);
btnClose = (TextView) findViewById(R.id.item_tnc_dialog_close);
btnAgree = (TextView) findViewById(R.id.item_tnc_dialog_agree);
btnDisagree = (TextView) findViewById(R.id.item_tnc_dialog_disagree);
btnClose.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
dismiss();
}
});
btnDisagree.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
System.exit(0);
}
});
btnAgree.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "YOU SELECTED AGREE",
Toast.LENGTH_SHORT).show();
dismiss();
}
});
showDialog();
}
/** 加载webview的内容 */
public void showDialog() {
String localHtml = "file:///android_asset/los.html";
if (mWebView != null) {
mWebView.getSettings().setDefaultTextEncodingName("utf-8");
mWebView.loadUrl(localHtml);
}
buttonsDisplayTwo(false);
}
/** 当true的时候,出现同意和不同意两个选项,反之是关闭选项 */
private void buttonsDisplayTwo(boolean two) {
btnAgree.setVisibility(two ? View.VISIBLE : View.GONE);
btnDisagree.setVisibility(two ? View.VISIBLE : View.GONE);
btnClose.setVisibility(two ? View.GONE : View.VISIBLE);
}
3.main.activity的代码就不写了。。直接写自定义的dialog代码
private TextView btnClose = null;
private TextView btnAgree = null;
private TextView btnDisagree = null;
private WebView mWebView = null;
public MyDialog(Context context) {
super(context, R.style.item_tnc_dialog);
setCancelable(false); // 阻止返回键的响应
setContentView(R.layout.dialog_view);
getWindow().setLayout(LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT);
setUpView();
}
private void setUpView() {
mWebView = (WebView) findViewById(R.id.item_tnc_dialog_webview);
btnClose = (TextView) findViewById(R.id.item_tnc_dialog_close);
btnAgree = (TextView) findViewById(R.id.item_tnc_dialog_agree);
btnDisagree = (TextView) findViewById(R.id.item_tnc_dialog_disagree);
btnClose.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
dismiss();
}
});
btnDisagree.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
System.exit(0);
}
});
btnAgree.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "YOU SELECTED AGREE",
Toast.LENGTH_SHORT).show();
dismiss();
}
});
showDialog();
}
/** 加载webview的内容 */
public void showDialog() {
String localHtml = "file:///android_asset/los.html";
if (mWebView != null) {
mWebView.getSettings().setDefaultTextEncodingName("utf-8");
mWebView.loadUrl(localHtml);
}
buttonsDisplayTwo(false);
}
/** 当true的时候,出现同意和不同意两个选项,反之是关闭选项 */
private void buttonsDisplayTwo(boolean two) {
btnAgree.setVisibility(two ? View.VISIBLE : View.GONE);
btnDisagree.setVisibility(two ? View.VISIBLE : View.GONE);
btnClose.setVisibility(two ? View.GONE : View.VISIBLE);
}
效果图如下:
标签:android,dialog
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Android实现网易Tab分类排序控件实现
2023-10-31 22:20:56
![](https://img.aspxhome.com/file/2023/5/126715_0s.png)
浅谈C#指针问题
2022-07-19 17:06:00
Java开发中为什么要使用单例模式详解
2023-12-24 21:56:40
![](https://img.aspxhome.com/file/2023/7/119187_0s.png)
Java扩展库RxJava的基本结构与适用场景小结
2022-12-27 10:03:15
Struts2之Validator验证框架的详细介绍
2023-09-08 14:46:05
![](https://img.aspxhome.com/file/2023/9/99739_0s.png)
SpringBoot 多任务并行+线程池处理的实现
2023-04-02 01:16:25
![](https://img.aspxhome.com/file/2023/8/122268_0s.png)
Spring Cloud Eureka(全面解析) 大白话
2022-11-12 22:43:02
![](https://img.aspxhome.com/file/2023/5/62735_0s.png)
Spring整合junit的配置过程图解
2022-12-18 16:37:48
![](https://img.aspxhome.com/file/2023/5/66975_0s.png)
Android Retrofit实现多图片/文件、图文上传功能
2021-11-01 00:23:47
C#使用Process类调用外部exe程序
2023-02-12 16:54:20
Java反射机制(Reflection)浅析
2023-04-17 14:35:56
TextView显示系统时间(时钟功能带秒针变化
2022-04-23 08:07:37
浅谈MyBatis 如何执行一条 SQL语句
2023-10-17 19:36:03
![](https://img.aspxhome.com/file/2023/3/68213_0s.png)
Java接口统一样式返回模板简介
2022-10-31 19:50:43
java JUC信号量Semaphore原理及使用介绍
2023-01-02 02:08:57
![](https://img.aspxhome.com/file/2023/1/84621_0s.png)
SpringBoot 整合RabbitMq 自定义消息监听容器来实现消息批量处理
2021-10-11 22:36:07
![](https://img.aspxhome.com/file/2023/3/113513_0s.jpg)
Java的System.getProperty()方法获取大全
2023-11-10 20:12:12
Android设置PreferenceCategory背景颜色的方法
2021-09-24 10:13:29
分析Java设计模式之组合模式
2023-11-25 13:13:30
![](https://img.aspxhome.com/file/2023/6/59856_0s.jpg)
java web开发之购物车功能实现示例代码
2023-01-24 16:52:55
![](https://img.aspxhome.com/file/2023/0/102640_0s.png)