zoukankan      html  css  js  c++  java
  • Android笔记之自定义对话框

    效果如下图

    对话框布局

    dialog_uninstallation_confirmation.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout 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"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp"
        android:background="@drawable/uninstallation_dialog_background"
        android:orientation="vertical">
    
        <ImageView
            android:id="@+id/iconImageView"
            android:layout_width="match_parent"
            android:layout_height="45dp"
            android:layout_gravity="center"
            android:layout_marginTop="25dp"
            android:layout_marginBottom="30dp"
            tools:src="@mipmap/ic_launcher" />
    
        <TextView
            android:id="@+id/messageTextView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textColor="@android:color/black"
            tools:text="是否卸载CustomDialog" />
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="40dp"
            android:layout_marginBottom="15dp">
    
            <TextView
                android:id="@+id/cancelTextView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="15dp"
                android:layout_marginRight="5dp"
                android:layout_weight="1"
                android:background="@drawable/uninstallation_dialog_button_background"
                android:gravity="center"
                android:padding="18dp"
                android:text="取消"
                android:textColor="@android:color/black" />
    
            <TextView
                android:id="@+id/uninstallTextView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:layout_marginRight="15dp"
                android:layout_weight="1"
                android:background="@drawable/uninstallation_dialog_button_background"
                android:gravity="center"
                android:padding="18dp"
                android:text="卸载"
                android:textColor="#FF0000" />
        </LinearLayout>
    </LinearLayout>

    自定义的对话框类

    UninstallationConfirmationDialog.java

    package com.bu_ish.custom_dialog_example;
    
    import android.app.Dialog;
    import android.content.Context;
    import android.os.Bundle;
    import android.view.View;
    import android.view.Window;
    import android.view.WindowManager;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    public abstract class UninstallationConfirmationDialog extends Dialog {
        private ImageView iconImageView;
        private TextView messageTextView;
        private int iconResId;
        private String message;
    
        public abstract void onCancelClicked();
    
        public abstract void onUninstallClicked();
    
        public UninstallationConfirmationDialog(Context context) {
            super(context, R.style.UninstallationConfirmationDialog);
        }
    
        public UninstallationConfirmationDialog setIcon(int resId) {
            this.iconResId = resId;
            return this;
        }
    
        public UninstallationConfirmationDialog setMessage(String message) {
            this.message = message;
            return this;
        }
    
        @Override
        public void show() {
            super.show();
            Window window = getWindow();
            WindowManager.LayoutParams layoutParams = window.getAttributes();
            layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
            window.setAttributes(layoutParams);
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.dialog_uninstallation_confirmation);
            iconImageView = findViewById(R.id.iconImageView);
            messageTextView = findViewById(R.id.messageTextView);
            iconImageView.setImageResource(iconResId);
            messageTextView.setText(message);
            findViewById(R.id.cancelTextView).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    onCancelClicked();
                    dismiss();
                }
            });
            findViewById(R.id.uninstallTextView).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    onUninstallClicked();
                    dismiss();
                }
            });
        }
    }

    对话框style

        <style name="UninstallationConfirmationDialog" parent="@android:style/Theme.Dialog">
            <item name="android:windowNoTitle">true</item>
            <item name="android:windowBackground">@android:color/transparent</item>
        </style>

    P.S.

    对话框默认风格是带标题的,通过windowNoTitle设置为无标题

    为保证对话框宽度与屏幕匹配,须通过Window.setAttributes(WindowManager.LayoutParams)设置宽度

    完整Demo链接:https://pan.baidu.com/s/1RItjQZ7v1xMHL7b5C6lLzw,提取码:qbwu

  • 相关阅读:
    0625jQuery练习:权限基础1:查询员工对应角色、修改员工对应角色
    0624jQuery练习:三级联动—时间
    0622jQuery基础:常用属性
    0621jQuery基础:基础属性
    0621jQuery练习:三级联动
    0621jQuery练习:弹窗
    0621jQuery基础:事件
    数据库连接-登录
    javaScript中的DOM操作及数组的使用
    设置日期对象(年-月-日 时-分-秒)实现菱形的拼接
  • 原文地址:https://www.cnblogs.com/buyishi/p/10450556.html
Copyright © 2011-2022 走看看