Android--自定义Dialog,仿IOS对话框样式
16lz
2021-01-23
效果:
实现:
1.dialog_layout.xml:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:background="@drawable/dialog_bg"> <RelativeLayout android:layout_width="280dp" android:layout_height="100dp" android:id="@+id/layout_title" android:gravity="center"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/title" android:text="11111" android:textColor="@color/black" android:gravity="center"/> RelativeLayout> <View android:layout_width="280dp" android:layout_height="1dp" android:background="@color/grey" android:layout_below="@+id/layout_title" android:layout_marginBottom="10dp"/> <RelativeLayout android:id="@+id/bottomoll" android:layout_width="280dp" android:layout_height="wrap_content" android:layout_below="@+id/layout_title"> <LinearLayout android:layout_width="280dp" android:layout_height="wrap_content"> <Button android:id="@+id/btn_cancel" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="取消" android:textColor="@color/blue" android:background="@null" android:textSize="18sp" android:paddingTop="10dp" android:paddingBottom="10dp"/> <View android:layout_width="1dp" android:layout_height="match_parent" android:background="@color/grey"/> <Button android:id="@+id/btn_exit" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="确定" android:textColor="@color/blue" android:background="@null" android:textSize="18sp"/> LinearLayout> RelativeLayout>RelativeLayout>
2.在style.xml中设置dialog的样式:
<style name="mdialog" parent="android:style/Theme.Dialog"> <item name="android:windowBackground">@android:color/transparentitem> <item name="android:windowNoTitle">trueitem> <item name="android:backgroundDimEnabled">trueitem>style>
3.创建类继承Dialog:
public class ConstomDialog extends Dialog { /**取消按钮*/ private Button button_cancel; /**确认按钮*/ private Button button_exit; /**标题文字*/ private TextView tv; //构造方法 public ConstomDialog(Context context) { super(context, R.style.mdialog); //通过LayoutInflater获取布局 View view = LayoutInflater.from(getContext()). inflate(R.layout.dialog_layout, null); tv = (TextView) view.findViewById(R.id.title); button_cancel = (Button) view.findViewById(R.id.btn_cancel); button_exit = (Button) view.findViewById(R.id.btn_exit); //设置显示的视图 setContentView(view); } /** * 设置显示的标题文字 */ public void setTv(String content) { tv.setText(content); } /** * 取消按钮监听 * */ public void setOnCancelListener(View.OnClickListener listener){ button_cancel.setOnClickListener(listener); } /** * 退出按钮监听 * */ public void setOnExitListener(View.OnClickListener listener){ button_exit.setOnClickListener(listener); }}
4.使用ConstomDialog:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //不显示系统的标题栏, getWindow().setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN ); setContentView(R.layout.activity_main); findViewById(R.id.tv_showDialog).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showDialog(); } }); } /** * 弹出对话框 */ public void showDialog() { //实例化自定义对话框 final ConstomDialog mdialog = new ConstomDialog(this); //对话框中退出按钮事件 mdialog.setOnExitListener(new View.OnClickListener() { @Override public void onClick(View v) { //如果对话框处于显示状态 if (mdialog.isShowing()) { //关闭对话框 mdialog.dismiss(); //关闭当前界面 finish(); } } }); //对话框中取消按钮事件 mdialog.setOnCancelListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mdialog != null && mdialog.isShowing()) { //关闭对话框 mdialog.dismiss(); } } }); mdialog.show(); }}
更多相关文章
- android 单选(RadioGroup )复选(CheckBox)按钮的应用
- Android 标题栏添加返回按钮及响应
- 重写对话框dialog
- android 调用android系统的对话框控件
- 初识Android之(一)-自定义标题栏控件
- android之按钮单击事件及监听器的实现方式
- Android中悬浮按钮的实现(记录)
- android activity以对话框形式显示
- Android获取状态栏、标题栏、ActionBar以及屏幕的高度