• 自定义Dialog


    先看效果图,后给完整代码:

    调用的TestDialog类:

    package com.example.dialog;
    
    import android.app.Dialog;
    import android.content.Context;
    import android.view.Gravity;
    import android.view.View;
    import android.view.Window;
    import android.view.WindowManager;
    import android.widget.TextView;
    
    public class TestDialog extends Dialog implements View.OnClickListener {
        private Context mContext;
        private TextView tv_cancel,tv_sure,tv_content,tv_title;
        private ConfirmListener confirmListener; //确定监听事件
        
        public TestDialog(Context context) {
            super(context,R.style.DialogTheme);
            mContext = context;
            setContentView(R.layout.dialog_layout);
            Window window = getWindow();
            WindowManager.LayoutParams params = window.getAttributes();
            params.gravity = Gravity.CENTER;
            window.setAttributes(params);
    
            initView();
        }
    
        private void initView(){
            tv_sure = (TextView)findViewById(R.id.dialog_sure);
            tv_title = (TextView)findViewById(R.id.dialog_title);
            tv_cancel = (TextView) findViewById(R.id.dialog_cancel);
            tv_content = (TextView)findViewById(R.id.dialog_content);
            tv_sure.setOnClickListener(this);
            tv_cancel.setOnClickListener(this);
        }
    
        @Override
        public void onClick(View view) {
            switch (view.getId()){
                case R.id.dialog_cancel:
                    this.dismiss();
                    break;
                case R.id.dialog_sure:
                    confirmListener.onConfirmClick(); 
                    this.dismiss();
                    break;
            }
        }
    
        //设置确定事件的监听
        public void setConfirmListener(ConfirmListener confirmListener){
            this.confirmListener = confirmListener;
        }
    
        //确定事件的监听接口
        public interface ConfirmListener{
            void onConfirmClick();
        }
    
        //设置提示头部
        public void setTitle(String title){
            tv_title.setText(title);
        }
    
        //设置提示内容
        public void setMessage(String msg){
            tv_content.setText(msg);
        }
    
    
    }
    

     styles.xml样式代码(直接复制到styles.xml即可):

    <style name="DialogTheme" parent="@android:style/Theme.Dialog">
            <!-- 边框 -->
            <item name="android:windowFrame">@null</item>
            <!-- 是否浮现在activity之上 -->
            <item name="android:windowIsFloating">true</item>
            <!-- 半透明 -->
            <item name="android:windowIsTranslucent">true</item>
            <!-- 无标题 -->
            <item name="android:windowNoTitle">true</item>
    
            <item name="android:background">@android:color/transparent</item>
            <!-- 背景透明 -->
            <item name="android:windowBackground">@android:color/transparent</item>
            <!-- 模糊 -->
            <item name="android:backgroundDimEnabled">true</item>
            <!-- 遮罩层 -->
            <item name="android:backgroundDimAmount">0.5</item>
        </style>
    

     样式布局代码(dialog_layout.xml):

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <LinearLayout
            android:layout_width="250dp"
            android:layout_height="140dp"
            android:background="@drawable/dialog_bg"
            android:orientation="vertical" >
            <TextView
                android:id="@+id/dialog_title"
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:gravity="center"
                android:text="温馨提示"
                android:textColor="@color/colorPrimary"
                android:textSize="16dp" />
    
            <TextView
                android:id="@+id/dialog_content"
                android:gravity="center_horizontal"
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:text="余额不足,请先充值"
                android:textColor="#777"
                android:textSize="15sp" />
    
            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="#c0c0c0"/>
    
            <LinearLayout
                android:gravity="center_vertical|center_horizontal"
                android:id="@+id/ll_btn"
                android:layout_width="match_parent"
                android:layout_height="40dp"
                android:orientation="horizontal">
    
                <TextView
                    android:id="@+id/dialog_cancel"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:text="取消"
                    android:textSize="15dp"
                    android:textColor="#888"
                    android:gravity="center_horizontal|center_vertical"/>
    
                <View
                    android:layout_width="1dp"
                    android:layout_height="match_parent"
                    android:background="#c0c0c0"/>
    
                <TextView
                    android:id="@+id/dialog_sure"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:textColor="@color/colorPrimary"
                    android:text="确定"
                    android:textSize="15dp"
                    android:gravity="center_horizontal|center_vertical"/>
    
            </LinearLayout>
    
        </LinearLayout>
    
    </RelativeLayout>
    

     圆角效果代码(dialog_bg.xml):

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android">
        <solid android:color="#fff" />
        <corners android:radius="5dp"/>
        <stroke android:color="#c0c0c0" android:width="1dp"/>
    </shape>

     MainActivity代码:

    package com.example.dialog;
    
    import androidx.appcompat.app.AppCompatActivity;
    import android.app.Dialog;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    
    public class MainActivity extends AppCompatActivity implements View.OnClickListener{
        private Button btnTest1;
        private TestDialog testDialog;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            initView();
        }
    
        private void initView(){
            btnTest1 = (Button) findViewById(R.id.btnTest1);
            btnTest1.setOnClickListener(this);
        }
    
        @Override
        public void onClick(View view) {
            switch (view.getId()){
                case R.id.btnTest1:
                    dialogSure();
                    break;
            }
        }
    
        //调用Dialog
        private void dialogSure(){
            testDialog = new TestDialog(this);
            //设置为true时,点击返回或者空白处取消
            testDialog.setCancelable(false);
            testDialog.setMessage("您确定退出吗?"); //设置提示内容
            //确定事件处理
            testDialog.setConfirmListener(new TestDialog.ConfirmListener() {
                @Override
                public void onConfirmClick() {
                    Toast.makeText(MainActivity.this, "退出成功", Toast.LENGTH_SHORT).show();
                }
            });
            testDialog.show(); //显示提示
        }
    }
    

     如果疑问,请留言。。。

  • 相关阅读:
    为什么不应该使用ZooKeeper做服务发现
    Python 练习 人事管理
    Python 爬取 妹子图(技术是无罪的)
    Python 爬取 书籍
    Python 爬取 豆瓣
    Python 爬取 房天下
    Python 爬取 煎蛋
    Python 爬取 拉钩
    Python 爬取 猫眼
    家具专区网
  • 原文地址:https://www.cnblogs.com/Mr-Deng/p/11431249.html
Copyright © 2020-2023  润新知