AlertDialog自定义单选功能

先来看一下效果图:


说一下主要功能:点击充值方式弹出AlertDialog进行选择,说明一下item后面的那个checkbox是用来显示的,当然也可以设置点击。   没错就是这么简单


自定义AlertDialog的布局:写的比较low,请见谅

<?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="190dp"
    android:background="@color/white"
    android:orientation="vertical"
    android:paddingBottom="20dp"
    android:paddingEnd="20dp"
    android:paddingStart="20dp">

    <android.support.v7.widget.AppCompatTextView
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:gravity="center"
        android:text="@string/choose_recharge_way"
        android:textColor="@color/main_text"
        android:textSize="15sp" />

    <android.support.v7.widget.LinearLayoutCompat
        android:id="@+id/dialog_select_pay_way_wechat"
        android:layout_width="match_parent"
        android:layout_height="59dp"
        android:layout_marginTop="10dp"
        android:orientation="horizontal">

        <android.support.v7.widget.AppCompatImageView
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:layout_gravity="center"
            android:src="@mipmap/icon_pay_wechat" />

        <android.support.v7.widget.AppCompatTextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_marginStart="10dp"
            android:layout_weight="1"
            android:gravity="center_vertical"
            android:text="@string/wechat_recharge"
            android:textColor="#8a8a8a"
            android:textSize="15sp" />

        <android.support.v7.widget.AppCompatCheckBox
            android:id="@+id/dialog_select_pay_way_wechat_selected"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginStart="10dp"
            android:background="@null"
            android:button="@drawable/select_bg" />

    </android.support.v7.widget.LinearLayoutCompat>

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@color/f2" />

    <android.support.v7.widget.LinearLayoutCompat
        android:id="@+id/dialog_select_pay_way_alipay"
        android:layout_width="match_parent"
        android:layout_height="59dp"
        android:layout_marginTop="10dp"
        android:orientation="horizontal">

        <android.support.v7.widget.AppCompatImageView
            android:layout_width="25dp"
            android:layout_height="25dp"
            android:layout_gravity="center"
            android:src="@mipmap/icon_pay_alipay" />

        <android.support.v7.widget.AppCompatTextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_marginStart="10dp"
            android:layout_weight="1"
            android:gravity="center_vertical"
            android:text="@string/alipay_recharge"
            android:textColor="#8a8a8a"
            android:textSize="15sp" />

        <android.support.v7.widget.AppCompatCheckBox
            android:id="@+id/dialog_select_pay_way_alipay_selected"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginStart="10dp"
            android:background="@null"
            android:button="@drawable/select_bg" />

    </android.support.v7.widget.LinearLayoutCompat>

</LinearLayout>

主要代码,很简单

private void choosePayWay() {
    dialog = new AlertDialog.Builder(getContext()).create();
    dialog.show();
    final Window window = dialog.getWindow();
    if (window != null) {
        window.setContentView(R.layout.dialog_select_pay_way);  // 设置布局
        window.setGravity(Gravity.BOTTOM);  // 显示位置
        window.setWindowAnimations(R.style.anim_panel_up_from_bottom);  // 设置dialog进入效果
        window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));  // 设置背景色为半透明
        //设置属性
        final WindowManager.LayoutParams params = window.getAttributes();
        params.width = WindowManager.LayoutParams.MATCH_PARENT;
        params.flags = WindowManager.LayoutParams.FLAG_DIM_BEHIND;
        params.dimAmount = 0.5f;
        window.setAttributes(params);
        window.findViewById(R.id.dialog_select_pay_way_wechat).setOnClickListener(this);
        window.findViewById(R.id.dialog_select_pay_way_alipay).setOnClickListener(this);
        final String t = mWay.getText().toString().trim();
        if (t.equals("微信充值")) {
            window.findViewById(R.id.dialog_select_pay_way_wechat_selected).setSelected(true);
        } else if (t.equals("支付宝充值")) {
            window.findViewById(R.id.dialog_select_pay_way_alipay_selected).setSelected(true);
        } else {
            window.findViewById(R.id.dialog_select_pay_way_wechat_selected).setSelected(false);
            window.findViewById(R.id.dialog_select_pay_way_alipay_selected).setSelected(false);
        }
    }
}
补充一下那个进入效果...

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="anim_panel_up_from_bottom" parent="@android:style/Animation">
        <item name="android:windowEnterAnimation">@anim/push_bottom_in</item>
        <item name="android:windowExitAnimation">@anim/push_bottom_out</item>
    </style>
</resources>

<?xml version="1.0" encoding="utf-8"?><!-- 上下滑入式 -->
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate
        android:duration="200"
        android:fromYDelta="100%p"
        android:toYDelta="0" />
</set>

<?xml version="1.0" encoding="utf-8"?><!-- 上下滑出式 -->
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="200"
        android:fromYDelta="0"
        android:toYDelta="50%p" />
</set>

基本就是这样,很简单。此篇文章仅作为防止自己以后脑子短路,不喜勿喷,谢谢。(本人小白)

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值