帮助类

对话框帮助类(二)

2017-09-22  本文已影响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

上一篇下一篇

猜你喜欢

热点阅读