自定义AlertDialog(仿真融宝)

本文介绍了一种简单的方法来创建自定义对话框。通过使用AlertDialog.Builder并结合LayoutInflater,可以轻松地为Android应用构建美观且功能丰富的对话框界面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最简单的自定义对话框方法

步骤:

1.写一个如图对话框一样的布局
2.用View.inflate()方法转化成一个View对象
3.通过AlertDialog的Builder对象的setView()方法将此view设置进去
4.然后通过AlertDialog的Builder对象的show()方法显示出来

activity_dialog布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="300dp"
    android:layout_height="wrap_content"
    android:padding="3dp"
    android:background="#ffffff"
    android:gravity="center_horizontal"
    android:orientation="vertical">

    <RelativeLayout
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:background="#ffffff"
        android:padding="10dp"
        android:orientation="horizontal">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="热线电话"
            android:textSize="18sp"/>

        <ImageButton
            android:id="@+id/ib_clear"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:background="@drawable/clear_dialog"/>
    </RelativeLayout>

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="#DDDDDD" />

    <TextView
        android:id="@+id/tv_phone"
        android:layout_width="280dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:textSize="16sp"
        android:text="热线电话:400-668-8499"/>

    <Button
        android:id="@+id/bt_ok"
        android:layout_width="280dp"
        android:layout_height="50dp"
        android:background="@drawable/bt_positive_selector"
        android:layout_marginTop="10dp"
        android:textColor="#ffffff"
        android:textSize="16sp"
        android:text="确定"/>


    <Button
        android:id="@+id/bt_cancel"
        android:layout_width="280dp"
        android:layout_height="50dp"
        android:background="@drawable/bt_negetive_selector"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="15dp"
        android:textColor="#ffffff"
        android:textSize="16sp"
        android:text="取消"/>
</LinearLayout>

MainActivity代码

package com.qiushi.nicedialog;

import android.app.AlertDialog;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private Button bt_show;
    private AlertDialog dialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        bt_show = (Button) findViewById(R.id.bt_show);
        bt_show.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showMyDialog();
            }
        });
    }

    private void showMyDialog() {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        View view = View.inflate(this,R.layout.activity_dialog,null);
        builder.setView(view);
        ImageButton ib_clear = (ImageButton) view.findViewById(R.id.ib_clear);
        TextView tv_phone = (TextView) view.findViewById(R.id.tv_phone);
        Button bt_ok = (Button) view.findViewById(R.id.bt_ok);
        Button bt_cancel = (Button) view.findViewById(R.id.bt_cancel);
        tv_phone.setText("工作日:9:00-21:00\n非工作日:9:00-18:00\n\n您确定要拨打400-888-8888?");
        ib_clear.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });
        bt_ok.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setAction(Intent.ACTION_CALL);
                intent.setData(Uri.parse("tel://400-888-8888"));
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
                dialog.dismiss();
            }
        });
        bt_cancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });

        dialog = builder.show();
    }
}

效果图如下:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值