首先來看看效果圖:左邊是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();
}
這篇博客到此結束,一步一個腳印慢慢加油吧