Android自定义对话框
来源:互联网 发布:sublime 格式化js css 编辑:程序博客网 时间:2024/05/20 09:25
对话框自定义类
package com.yunyou.icloudinn.bookhouse.Ui;/** * Created by chen on 2017/10/13. */import android.app.Dialog;import android.content.Context;import android.content.DialogInterface;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup.LayoutParams;import android.view.WindowManager;import android.widget.Button;import android.widget.LinearLayout;import android.widget.TextView;import com.yunyou.icloudinn.bookhouse.R;public class CustomDialog extends Dialog { public CustomDialog(Context context) { super(context); } public CustomDialog(Context context, int theme) { super(context, theme); } public static class Builder { private Context context; private String title; private String message; private String positiveButtonText; private String negativeButtonText; private View contentView; private CustomDialog dialog; private View layout; private DialogInterface.OnClickListener positiveButtonClickListener; private DialogInterface.OnClickListener negativeButtonClickListener; public Builder(Context context) { this.context = context; LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); // instantiate the dialog with the custom Theme dialog = new CustomDialog(context,R.style.Dialog); layout = inflater.inflate(R.layout.dialog_normal_layout, null); dialog.addContentView(layout, new LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); // 全屏 WindowManager.LayoutParams lp = dialog.getWindow().getAttributes(); lp.width = WindowManager.LayoutParams.MATCH_PARENT; lp.height = WindowManager.LayoutParams.WRAP_CONTENT; dialog.getWindow().setAttributes(lp); } public Builder setMessage(String message) { this.message = message; return this; } /** * Set the Dialog message from resource * * @param * @return */ public Builder setMessage(int message) { this.message = (String) context.getText(message); return this; } /** * Set the Dialog title from resource * * @param title * @return */ public Builder setTitle(int title) { this.title = (String) context.getText(title); return this; } /** * Set the Dialog title from String * * @param title * @return */ public Builder setTitle(String title) { this.title = title; return this; } public Builder setContentView(View v) { this.contentView = v; return this; } /** * Set the positive button resource and it's listener * * @param positiveButtonText * @return */ public Builder setPositiveButton(int positiveButtonText, DialogInterface.OnClickListener listener) { this.positiveButtonText = (String) context .getText(positiveButtonText); this.positiveButtonClickListener = listener; return this; } public Builder setPositiveButton(String positiveButtonText, DialogInterface.OnClickListener listener) { this.positiveButtonText = positiveButtonText; this.positiveButtonClickListener = listener; return this; } public Builder setNegativeButton(int negativeButtonText, DialogInterface.OnClickListener listener) { this.negativeButtonText = (String) context .getText(negativeButtonText); this.negativeButtonClickListener = listener; return this; } public Builder setNegativeButton(String negativeButtonText, DialogInterface.OnClickListener listener) { this.negativeButtonText = negativeButtonText; this.negativeButtonClickListener = listener; return this; } public CustomDialog create() { // set the dialog title ((TextView) layout.findViewById(R.id.title)).setText(title); // set the confirm button if (positiveButtonText != null) { ((Button) layout.findViewById(R.id.positiveButton)) .setText(positiveButtonText); if (positiveButtonClickListener != null) { ((Button) layout.findViewById(R.id.positiveButton)) .setOnClickListener(new View.OnClickListener() { public void onClick(View v) { positiveButtonClickListener.onClick(dialog, DialogInterface.BUTTON_POSITIVE); } }); } } else { // if no confirm button just set the visibility to GONE layout.findViewById(R.id.positiveButton).setVisibility( View.GONE); } // set the cancel button// if (negativeButtonText != null) {// ((Button) layout.findViewById(R.id.negativeButton))// .setText(negativeButtonText);// if (negativeButtonClickListener != null) {// ((Button) layout.findViewById(R.id.negativeButton))// .setOnClickListener(new View.OnClickListener() {// public void onClick(View v) {// negativeButtonClickListener.onClick(dialog,// DialogInterface.BUTTON_NEGATIVE);// }// });// }// } else {// // if no confirm button just set the visibility to GONE// layout.findViewById(R.id.negativeButton).setVisibility(// View.GONE);// } // set the content message// if (message != null) {// ((TextView) layout.findViewById(R.id.message)).setText(message);// } else if (contentView != null) {// // if no message set// // add the contentView to the dialog body// ((LinearLayout) layout.findViewById(R.id.content))// .removeAllViews();// ((LinearLayout) layout.findViewById(R.id.content))// .addView(contentView, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));// } dialog.setContentView(layout); return dialog; } }}
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true" android:background="@color/grey3"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" android:orientation="vertical" > <TextView android:id="@+id/title" android:layout_width="fill_parent" android:layout_height="40.0dip" android:gravity="center" android:text="图片浏览" android:visibility="visible" /> <LinearLayout android:id="@+id/content" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" > <TextView android:id="@+id/message" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="left|center" android:lineSpacingMultiplier="1.5" android:minHeight="120.0dip" android:paddingBottom="15.0dip" android:paddingLeft="20.0dip" android:paddingRight="20.0dip" android:paddingTop="15.0dip" /> </LinearLayout> <View android:layout_width="fill_parent" android:layout_height="1.0px" android:background="#ffd0d0d0" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="60.0dip" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" android:orientation="horizontal" > <Button android:id="@+id/positiveButton" android:layout_width="114.0dip" android:layout_height="40.0dip" android:gravity="center" android:text="上一张" /> <Button android:id="@+id/negativeButton" android:layout_width="114.0dip" android:layout_height="40.0dip" android:layout_marginLeft="20.0dip" android:gravity="center" android:text="下一张" /> </LinearLayout></RelativeLayout>
对话框样式
<style name="Dialog" parent="android:style/Theme.Dialog"> <item name="android:background">#00000000</item> <item name="android:windowFullscreen">true</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> </style>
对话框调用
if(builder==null)builder = new CustomDialog.Builder(context); builder.setMessage("浏览图片"); builder.setTitle("心情动态"); builder.setPositiveButton("上一张", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); //设置你的操作事项 } }); builder.setNegativeButton("下一张", new android.content.DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.create().show();
阅读全文
0 0
- android中的对话框:自定义对话框
- Android Dialog( 自定义对话框)
- android 自定义对话框
- android自定义对话框
- Android自定义对话框
- android 自定义对话框
- Android自定义Dialog对话框
- android自定义大小对话框
- android自定义对话框
- Android自定义对话框
- android 自定义对话框
- android 自定义对话框
- android自定义对话框
- android 自定义对话框动画
- Android弹出自定义对话框
- android自定义对话框
- android 自定义对话框
- Android自定义对话框
- equals()方法总结
- 【bzoj1190】[HNOI2007]梦幻岛宝珠 分层背包dp
- 快速排序
- 剑指 03-—链表从尾到头打印
- 【LeetCode】C# 80、Remove Duplicates from Sorted Array II
- Android自定义对话框
- phpstorm 2017激活
- centos 打开配置文件出错:E325: ATTENTION Found a swap file by the name "/etc/vsftpd/.vsftpd.conf.swp"
- Spring RestTemplate作为负载平衡器客户端
- ABAP 动态生成内表的几种方法(Several Methods of Dynamic Internal Table Creation)
- 虚拟数字货币开发小专家薪捷讲述,关于虚拟数字货币之王比特币论文区块链挖矿原理的那些事儿
- MVC使用Newtonsoft无需实体类,实现JSON数据返回给前端页面使用
- mysql触发器创建、查看、删除语法
- Android 持久化技术(一)