美文网首页帮助类
对话框帮助类(二)

对话框帮助类(二)

作者: 根艮哏艮根 | 来源:发表于2017-09-22 10:29 被阅读2次

    主要代码:

    public class AlertDialog {
        /** 上下文参数 */
        private Context mContext;
        /** 标题旁边显示图标的ImageView */
        private ImageView mIconIV;
        /** 显示标题的TextView */
        private TextView mTitleTV;
        /** 显示内容的TextView */
        private TextView mContentTV;
        /** 默认显示内容的布局LinearLayout */
        private LinearLayout mDefaultLL;
        /** 显示自定义布局的FrameLayout */
        private FrameLayout mCustomFL;
        /** 最左边的按钮Button */
        private Button mLeftBtn;
        /** 中间的按钮Button */
        private Button mMiddleBtn;
        /** 最右边的按钮Button */
        private Button mRightBtn;
        /** 全局的对话框变量 */
        private android.app.AlertDialog mDialog;
        
        public AlertDialog(Context context){
            mContext = context;
            mDialog = new android.app.AlertDialog.Builder(mContext).create();
            mDialog.setView(View.inflate(context, R.layout.alert_dialog_new, null));
            mDialog.show();
            //替换整个对话框的布局
            Window window = mDialog.getWindow();
            window.setContentView(R.layout.alert_dialog_new);
            
            //获取自定义布局的控件
            mIconIV = (ImageView)window.findViewById(R.id.alert_dialog_icon_iv);
            mTitleTV = (TextView)window.findViewById(R.id.alert_dialog_title_tv);
            mDefaultLL = (LinearLayout)window.findViewById(R.id.alert_dialog_content_ll);
            mContentTV = (TextView)window.findViewById(R.id.alert_dialog_content_tv);
            mCustomFL = (FrameLayout)window.findViewById(R.id.alert_dialog_custom_fl);
            mLeftBtn = (Button)window.findViewById(R.id.alert_dialog_left_btn);
            mMiddleBtn = (Button)window.findViewById(R.id.alert_dialog_middle_btn);
            mRightBtn = (Button)window.findViewById(R.id.alert_dialog_right_btn);
        }
        /**
         * setIcon:设置标题左边图标的资源ID. <br/> 
         * @author wchhuangya
         * @param resId -   图标的图片资源ID
         */
        public AlertDialog setIcon(int resId){
            mIconIV.setBackgroundResource(resId);
            return this;
        }
        /**
         * setIcon:设置标题左边图标的资源ID. <br/> 
         * @author wchhuangya
         * @param title -   标题
         */
        public AlertDialog setTitle(String title){
            mTitleTV.setText(title);
            return this;
        }
        /**
         * setIcon:设置标题. <br/> 
         * @author wchhuangya
         * @param msg   -   内容
         */
        public AlertDialog setMsg(String msg){
            mContentTV.setText(msg);
            return this;
        }
        /**
         * setCustomView:设置自定义布局. <br/> 
         * @author wchhuangya
         * @param resId -   自定义布局的ID
         */
        public AlertDialog setCustomView(int resId){
            View view = View.inflate(mContext, resId, null);
            if(mCustomFL.getChildCount() > 0)
                mCustomFL.removeAllViews();
            mDefaultLL.setVisibility(View.GONE);
            mCustomFL.addView(view);
            return this;
        }
        /**
         * getSingleView:(获取自定义布局里的某一控件). <br/> 
         * @author wuhr
         * @param resId
         * @return
         */
        public View getSingleView(int resId){
            if(mCustomFL.getChildCount() > 0){
                return mCustomFL.findViewById(resId);
            } else {
                return null;
            }
        }
        /**
         * setLeftBtnText:设置左边按钮的文字. <br/> 
         * @author wchhuangya   -   按钮的文字
         */
        public AlertDialog setLeftBtnText(String text){
            mLeftBtn.setVisibility(View.VISIBLE);
            mLeftBtn.setText(text);
            return this;
        }
        /**
         * setLeftBtnText:设置中间按钮的文字. <br/> 
         * @author wchhuangya   -   按钮的文字
         */
        public AlertDialog setMiddleBtnText(String text){
            mMiddleBtn.setVisibility(View.VISIBLE);
            mMiddleBtn.setText(text);
            return this;
        }
        /**
         * setLeftBtnText:设置右边按钮的文字. <br/> 
         * @author wchhuangya   -   按钮的文字
         */
        public AlertDialog setRightBtnText(String text){
            mRightBtn.setVisibility(View.VISIBLE);
            mRightBtn.setText(text);
            return this;
        }
        /**
         * setLeftBtnListener:设置左边按钮的事件监听. <br/> 
         * @author wchhuangya
         * @param listener  -   事件监听
         */
        public AlertDialog setLeftBtnListener(final View.OnClickListener listener){
            mLeftBtn.setOnClickListener(listener);
            return this;
        }
        /**
         * setLeftBtnListener:设置中间按钮的事件监听. <br/> 
         * @author wchhuangya
         * @param listener  -   事件监听
         */
        public AlertDialog setMiddleBtnListener(final View.OnClickListener listener){
            mMiddleBtn.setOnClickListener(listener);
            return this;
        }
        /**
         * setLeftBtnListener:设置右边按钮的事件监听. <br/> 
         * @author wchhuangya
         * @param listener  -   事件监听
         */
        public AlertDialog setRightBtnListener(final View.OnClickListener listener){
            mRightBtn.setOnClickListener(listener);
            return this;
        }
        /**
         * isCancelable:是否可以取消对话框. <br/> 
         * @author wchhuangya
         * @param isCancelable  -   true:可以取消;false:不能取消;
         * @return
         */
        public AlertDialog isCancelable(boolean isCancelable){
            mDialog.setCancelable(isCancelable);
            return this;
        }
        /**
         * isCancelable:点击对话框外的区域是否可以取消对话框. <br/> 
         * @author wchhuangya
         * @param isCancelableOnTouchOutside    -   true:可以取消;false:不能取消;
         * @return
         */
        public AlertDialog isCancelableOnTouchOutside(boolean isCancelableOnTouchOutside){
            mDialog.setCanceledOnTouchOutside(isCancelableOnTouchOutside);
            return this;
        }
        /**
         * dismiss:让对话框消失的方法. <br/> 
         * @author wchhuangya
         */
        public void dismiss(){
            mDialog.dismiss();
        }
    }
    
    

    配置文件:

     <!-- 自定义对话框样式 -->
        <style name="DialogWindowTitle">
            <item name="android:textSize">22sp</item>
            <item name="android:textColor">#1e8fd4</item>
        </style>
        <!-- 自定义对话框按钮样式 -->
        <style name="dialog_btn">
            <item name="android:layout_width">0dp</item>
            <item name="android:layout_height">wrap_content</item>
            <item name="android:minHeight">36dp</item>
            <item name="android:layout_weight">1</item>
            <item name="android:layout_marginBottom">10dp</item>
            <item name="android:background">@drawable/btn_selector</item>
            <item name="android:textColor">@drawable/btn_color</item>
            <item name="android:gravity">center</item>
        </style>
    

    demo请移步guthub,传送门:https://github.com/liuxinggen/AlertDialogHelper

    相关文章

      网友评论

        本文标题:对话框帮助类(二)

        本文链接:https://www.haomeiwen.com/subject/lgwxextx.html