android Dialog 自定义 封装
来源:互联网 发布:淘宝怎么升级企业店铺 编辑:程序博客网 时间:2024/06/11 08:09
本文代码是将一个title和两个button的自定义dialog封装了一下,用的时候只需设置contentview即可,方便于较多使用相同dialog样式但内容不同的情况。
CommonDialog.java
package com.wzf.common;import android.app.Activity;import android.app.Dialog;import android.view.Display;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.Window;import android.view.WindowManager.LayoutParams;import android.widget.Button;import android.widget.FrameLayout;import android.widget.TextView;import com.wzf.R;/** * useage * <pre> * DialogClickListener mDialogClickListener = new DialogClickListener() { * @Override * public void onOkClickListener(Dialog dialog) { * Toast.makeText(ManageRoomListActivity.this, "ok", Toast.LENGTH_SHORT).show(); * dialog.dismiss(); * } * @Override * public void onCancelClickListener(Dialog dialog) { * Toast.makeText(ManageRoomListActivity.this, "cancel", Toast.LENGTH_SHORT).show(); * dialog.dismiss(); * } * }; * * private void showDialog() { * CommonDialog commonDialog = new CommonDialog(this); * final Dialog dialog = commonDialog.setTitle(R.string.dialog_title_add_room) * .setContentView(R.layout.base_dialog_content_add_room) * .setOkClickListener(mDialogClickListener) * .setCancelListener(mDialogClickListener) * .create(); * FrameLayout parent = commonDialog.getContentParent(); * * ImageView image = (ImageView) parent.findViewById(R.id.image); * EditText edit = (EditText) parent.findViewById(R.id.edit); * } * </pre> * */public class CommonDialog {Activity mActivity;TextView mTitle;Button mOk;Button mCancel;FrameLayout mFrameLayout;Dialog mDialog;DialogClickListener mOkClickListener;DialogClickListener mCancelClickListener;int mTitleResId = INVALID_RES_ID;int mContentResId = INVALID_RES_ID;static final int INVALID_RES_ID = 0;public CommonDialog(Activity a) {mActivity = a;mDialog = new Dialog(mActivity, R.style.base_dialog);mDialog.show(); Window window = mDialog.getWindow(); Display d = mActivity.getWindowManager().getDefaultDisplay(); LayoutParams p = window.getAttributes(); p.width = (int) (d.getWidth() * 0.95); window.setAttributes(p); window.setContentView(R.layout.base_dialog_layout); mTitle = (TextView) window.findViewById(R.id.title); mFrameLayout = (FrameLayout) window.findViewById(R.id.frame_layout); mCancel = (Button) window.findViewById(R.id.btn_cancel); mOk = (Button) window.findViewById(R.id.btn_ok);}public Dialog create() {if (mTitleResId != INVALID_RES_ID) mTitle.setText(mTitleResId);if (mContentResId != INVALID_RES_ID) LayoutInflater.from(mActivity).inflate(mContentResId, mFrameLayout);if (mOkClickListener != null) mOk.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {mOkClickListener.onOkClickListener(mDialog);}});if (mCancelClickListener != null) mCancel.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {mCancelClickListener.onCancelClickListener(mDialog);}}); return mDialog;}public FrameLayout getContentParent() {return mFrameLayout;}public CommonDialog setTitle(int resId) {mTitleResId = resId;return this;}public CommonDialog setOkClickListener(DialogClickListener l) {mOkClickListener = l;return this;}public CommonDialog setCancelListener(DialogClickListener l) {mCancelClickListener = l;return this;}public CommonDialog setContentView(int resId) { mContentResId = resId;return this;}public interface DialogClickListener {void onOkClickListener(Dialog dialog);void onCancelClickListener(Dialog dialog);}}
styles.xml
<resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="base_dialog" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item><!-- 边框 --> <item name="android:windowIsFloating">true</item><!-- 是否浮现在activity之上 --> <item name="android:windowIsTranslucent">false</item><!-- 半透明 --> <item name="android:windowNoTitle">true</item><!-- 无标题 --> <item name="android:windowBackground">@null</item><!-- 自己想要的背景 --> <item name="android:backgroundDimEnabled">false</item><!-- 模糊 --> </style></resources>
base_dialog_layout.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="@color/dialog_bg" > <TextView android:id="@+id/title" android:layout_width="match_parent" android:layout_height="@dimen/dialog_title_height" android:paddingLeft="20dp" android:gravity="center_vertical" android:textSize="@dimen/dialog_title_size" android:textColor="@color/white" android:background="@color/dialog_bg_title"/> <FrameLayout android:id="@+id/frame_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingTop="10dp" android:paddingBottom="10dp" android:paddingLeft="20dp" android:paddingRight="20dp"/>" <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingBottom="10dp" android:gravity="center_horizontal" > <Button android:id="@+id/btn_cancel" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/dialog_btn_margin" android:background="@drawable/button_selector" android:text="@string/cancel" android:textColor="@color/black" android:textSize="@dimen/dialog_middle_text_size" /> <Button android:id="@+id/btn_ok" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/dialog_btn_margin" android:layout_marginRight="@dimen/dialog_btn_margin" android:background="@drawable/button_selector" android:text="@string/ok" android:textColor="@color/dialog_bg_btn_ok" android:textSize="@dimen/dialog_middle_text_size" /> </LinearLayout></LinearLayout>
布局中使用的一些res id 这里就不列出了,调一下就行了。
使用方法在java文件注释里。
0 0
- android Dialog 自定义 封装
- Android 自定义dialog(封装好的)
- Android 自定义通用Dialog的封装
- Android 自定义Dialog实现步骤及封装
- 自定义dialog简单封装
- 自定义Dialog android Dialog
- Android-- 封装Dialog,即自定义Dialog,使其满足各种dialog的样式要求
- 浅谈android中的自定义封装易用的Dialog
- 浅谈android中的自定义封装易用的Dialog
- Android自定义弹框Dialog和Popupwindow的封装使用
- android中的自定义封装易用的Dialog
- android中的自定义封装易用的Dialog
- 浅谈android中的自定义封装易用的Dialog
- android中dialog封装
- Android Dialog高度封装
- 【Android】Dialog以及自定义Dialog
- android 系统Dialog,自定义Dialog
- android 自定义dialog 自定义dialog 宽度问题
- Android使用HttpClient多线程访问网络错误解决方法之一
- Oracle —— Sql语法总结
- AWR ADDM
- 初学WPF的各种小问题及解决
- ASH
- android Dialog 自定义 封装
- Hdoj 1432 Lining Up 【叉积】
- POJ 1679The Unique MST Pim算法求解
- java 启动Tomcat
- Installation error: INSTALL_FAILED_UID_CHANGED 的解决办法
- leetcode 日经贴,Cpp code -Palindrome Partitioning
- 部分动画知识,及零散内容
- 面向对象学习笔记-封装
- 算法导论 python代码 第八章