我試圖用自定義view
(無標題或頁腳)和圓角構建AlertDialog
。我見過很多關於如何做的文章,我嘗試了很多東西,但是我無法像我想的那樣構建它。Android:具有自定義視圖和圓角的AlertDialog
這是我的目標:
我創建了一個drawable
爲dialog
稱爲dialog_background.xml:
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid
android:color="#FFAAAAAA" />
<stroke
android:width="2dp"
android:color="#FF000000" />
<corners android:radius="20dp" />
</shape>
而且我添加了一個style
使用它:
<style name="MyDialog" parent="@android:style/Theme.Dialog">
<item name="android:background">@drawable/dialog_background</item>
</style>
我的自定義view
的layout
會有兩個按鈕。現在我向你展示一個空的LinearLayout
,以簡化它。這是playdialog.xml:
<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:orientation="vertical"
style="@style/MyDialog"
>
</LinearLayout>
要構建Dialog
我使用DialogFragment
。這是它的onCreateDialog
功能:
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
builder.setView(inflater.inflate(R.layout.playdialog, null));
return builder.create();
}
好吧,如果我用這樣的代碼,我得到這樣的:
我試圖設置dialog
背景透明修改我DialogFragment
代碼:
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
builder.setView(inflater.inflate(R.layout.playdialog, null));
**NEW**
Dialog d = builder.create();
d.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
return d;
}
結果是完全一樣的,然後我意識到那個白色的矩形u nder my dialog
來自我的自定義view
,而不是從dialog
。我已經將我的view
的背景設置爲dialog_background.xml,因此我無法將其設置爲透明,或者我鬆散了角落,顏色等。
然後我決定修改dialog
的背景dialog_background.xml並讓我的視圖具有純色作爲背景。
在我的自定義view
layout
(playdialog.xml)我換成風格= 「@風格/ MyDialog」 有:
android:background="#FFAAAAAA"
然後在我DialogFragment
我用這個代碼:
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
builder.setView(inflater.inflate(R.layout.playdialog, null));
**NEW**
Dialog d = builder.create();
d.getWindow().setBackgroundDrawableResource(R.drawable.dialog_background);
return d;
}
這就是我得到的:
這幾乎是我想要的,但你可以看到我的自定義view
邊框,所以它不夠好。在這一點上,我不知道我還能做什麼。
任何人都知道我該如何解決它?
謝謝!
你能解決這個問題嗎?使用圓角時,我無法消除波紋管中的白色部分 – sabbir 2015-01-07 20:32:52