Android(安卓)通用Dialog的写法
16lz
2021-01-26
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、效果图
- 例子只实现了一个简单的布局,根据自己功能的需求传入不同的布局就可以了。。。
更多相关文章
- 改变ProgressBar默认颜色
- android中的自定义popupwindow
- Android五种布局方式
- android 获得屏幕、视图、任务栏、状态栏的高宽以及屏幕的设置
- Android(安卓)support library支持包常用控件介绍(一)
- Android(安卓)开发(04)高级UI组件
- EditText背景 光标 下划线颜色
- Android(安卓)学习笔记 1
- 定义自己的ViewGroup