1、概述

  • 相信大家在项目开发中都会用到一些提示框,如果用的地方多了系统的dialog无法满足需求,那我们就要自定义dialog了,怎样能够简单方便呢?不多说了直接上代码。

2、BaseDialog.java

public class BaseDialog extends Dialog {    private Context context;    private int itemLayoutId;    /**     * 无高度设置、居中显示     * @param mContext     * @param view     * @return     */    public static BaseDialog showDialog(Activity mContext, int view) {        BaseDialog dialog = new BaseDialog(mContext, R.style.SubmitDialog, view);        dialog.show();        return dialog;    }    /**     * 距离头部、底部的高度     * @param mContext     * @param view     * @param y     * @return     */    public static BaseDialog showDialog(Activity mContext, int view,int mGravity, int y) {        BaseDialog dialog = new BaseDialog(mContext, R.style.SubmitDialog, view);        Window dialogWindow = dialog.getWindow();        WindowManager.LayoutParams lp = dialogWindow.getAttributes();        dialogWindow.setGravity(mGravity);        lp.y = y; // 新位置Y坐标        dialogWindow.setAttributes(lp);        dialog.show();        return dialog;    }    public BaseDialog(Context context, int theme, int itemLayoutId) {        super(context, theme);        this.context = context;        this.itemLayoutId = itemLayoutId;    }    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(itemLayoutId);    }    /**     * 通过控件的Id获取对于的控件,如果没有则加入views     *     * @param viewId     * @return     */    public  T getView(int viewId) {        View view = null;        view = findViewById(viewId);        return (T) view;    }    /**     * 为TextView设置字符串     *     * @param viewId     * @param text     * @return     */    public BaseDialog setText(int viewId, String text) {        TextView view = getView(viewId);        view.setText(text);        return this;    }}

3、Dialog样式

  • 在styles.xml文件中设置dialog样式
    -- 设置Dialog弹出样式 -->    //颜色透明 "transparents">#00000000

4、Dialog布局文件

  • 布局文件根据自己项目需求而定,下面给出一个例子share_dialog.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">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="110dp"        android:layout_gravity="center"        android:background="@drawable/ll_white"        android:orientation="vertical">        <TextView            android:id="@+id/tv_title"            android:layout_width="match_parent"            android:layout_height="0dp"            android:layout_weight="1"            android:gravity="center"            android:textColor="#000000"            android:textSize="20sp" />        <View            android:layout_width="match_parent"            android:layout_height="1dp"            android:background="@color/line_tv" />        <LinearLayout            android:layout_width="match_parent"            android:layout_height="50dp"            android:orientation="horizontal">            <TextView                android:clickable="true"                android:id="@+id/tv_cancel"                android:layout_width="0dp"                android:layout_height="match_parent"                android:layout_weight="1"                android:gravity="center"                android:textColor="#1b77c6"                android:textSize="18sp" />            <View                android:layout_width="1dp"                android:layout_height="match_parent"                android:background="@color/line_tv" />            <TextView                android:clickable="true"                android:id="@+id/tv_btn"                android:layout_width="0dp"                android:layout_height="match_parent"                android:layout_weight="1"                android:gravity="center"                android:textColor="#1b77c6"                android:textSize="18sp" />        LinearLayout>    LinearLayout>LinearLayout>

5、使用方式

  final BaseDialog dialog = BaseDialog.showDialog(mContext, R.layout.share_dialog, Gravity.TOP,600);                dialog.setText(R.id.tv_title, "您确定要退出登录吗?");                dialog.setText(R.id.tv_cancel, "取消");                dialog.setText(R.id.tv_btn, "确定");                dialog.getView(R.id.tv_cancel).setOnClickListener(new View.OnClickListener() {                    @Override                    public void onClick(View v) {                        dialog.dismiss();                    }                });                dialog.getView(R.id.tv_btn).setOnClickListener(new View.OnClickListener() {                    @Override                    public void onClick(View v) {                       //逻辑代码                    }                });
  • 如果要布局居中则不用传入高度,更多方法自己可以试着扩展。

6、效果图

  • 例子只实现了一个简单的布局,根据自己功能的需求传入不同的布局就可以了。。。

更多相关文章

  1. 改变ProgressBar默认颜色
  2. android中的自定义popupwindow
  3. Android五种布局方式
  4. android 获得屏幕、视图、任务栏、状态栏的高宽以及屏幕的设置
  5. Android(安卓)support library支持包常用控件介绍(一)
  6. Android(安卓)开发(04)高级UI组件
  7. EditText背景 光标 下划线颜色
  8. Android(安卓)学习笔记 1
  9. 定义自己的ViewGroup

随机推荐

  1. 安卓003快速入门
  2. 一个最简单的基于Android(安卓)SearchVie
  3. activity的四个启动模式
  4. Android核心分析(26)-----Android(安卓)GDI
  5. Android(安卓)如何让某个view悬浮在其他
  6. Android实现机制(三)——View事件分发机制
  7. 《Android(安卓)JNI》05 在JNI中调用Java
  8. Android(安卓)Info类的总结
  9. Android(安卓)aapt自动打包工具详细介绍
  10. Android源码下载小结