Android 設置Dialog背景透明

首先來看看效果圖:左邊是UI設計圖,右邊是dialog顯示樣式

這和我們原本的UI設計顯示的完全不同了,甚至有點醜,所以就想着更改dialog的Style屬性,試了幾種屬性好像達不到我要的樣式,可能是對style屬性不夠熟悉,所以就換了個思路,能不能設置dialog的背景色爲透明的?本着好奇的態度去看了一下,果然是有出路的window中有setBackgroundDrawableResource方法,dialog是託管在window中的,所以就試了下關鍵代碼
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
一運行,果然達到了想要的效果

爲了方便查看現在貼出所有代碼
首先看看佈局文件dialog_for_gender.xml

<?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="wrap_content"
    android:orientation="vertical"
    android:paddingLeft="@dimen/dp_8"
    android:paddingRight="@dimen/dp_8"
    android:paddingBottom="@dimen/dp_20">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/bg_white_r5"
        android:orientation="vertical">

        <TextView
            android:id="@+id/fg_man"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:paddingTop="@dimen/dp_16"
            android:paddingBottom="@dimen/dp_16"
            android:text="男"
            android:textColor="@color/color_0060FF"
            android:textSize="@dimen/sp_15" />

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="@dimen/dp_1"
            android:background="@color/color_E9E9E9" />

        <TextView
            android:id="@+id/fg_woman"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:paddingTop="@dimen/dp_16"
            android:paddingBottom="@dimen/dp_16"
            android:text="女"
            android:textColor="@color/color_FC3D42"
            android:textSize="@dimen/sp_15" />
    </LinearLayout>

    <TextView
        android:id="@+id/fg_cancel"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/dp_20"
        android:background="@drawable/bg_white_r5"
        android:gravity="center"
        android:paddingTop="@dimen/dp_12"
        android:paddingBottom="@dimen/dp_12"
        android:text="取消"
        android:textColor="@color/color_66"
        android:textSize="@dimen/sp_15" />


</LinearLayout>

在java代碼中的使用

    private AlertDialog dialog;
    /**
     * 性別選擇彈出框
     */
    private void showGenderSelect() {
        View view = LayoutInflater.from(this).inflate(R.layout.dialog_for_gender, null);
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setView(view);
        view.findViewById(R.id.fg_cancel).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });
        view.findViewById(R.id.fg_man).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                genderTV.setText("男");
                dialog.dismiss();
            }
        });
        view.findViewById(R.id.fg_woman).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                genderTV.setText("女");
                dialog.dismiss();
            }
        });
        dialog = builder.create();
        dialog.setView(view);
        dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
        dialog.getWindow().setGravity(Gravity.BOTTOM);
        dialog.show();
    }

這篇博客到此結束,一步一個腳印慢慢加油吧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章