2017-08-08 10 views
1

深入研究了這一點,但我對Layer列表的體驗仍然不足。這是我的xml:Android DialogFragment - 如何以編程方式更改帶圓角的對話框片段的顏色

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<item> 
    <shape xmlns:android="http://schemas.android.com/apk/res/android"> 
     <corners android:radius="10dip"/> 
     <padding 
      android:bottom="2dip" 
      android:left="8dip" 
      android:right="8dip" 
      android:top="2dip"/> 
    </shape> 
</item> 

<item 
    android:id="@+id/dialog_bg"> 
    <shape xmlns:android="http://schemas.android.com/apk/res/android"> 
     <solid android:color="#FFFFFF"/> 
     <stroke 
      android:width="16dip" 
      android:color="#FFFFFF"/> 

     <padding 
      android:bottom="2dip" 
      android:left="8dip" 
      android:right="8dip" 
      android:top="2dip"/> 
    </shape> 
</item> 
</layer-list> 

我對如何做到這一點有正確的想法嗎?

,我想用這個Java方法:

getDialog().getWindow().setBackgroundDrawableResource(R.drawable.rounded_corners_dialog); 

但我會有關的代碼改變它的顏色,後來呢?

感謝,

牛逼

+0

你可以擴展該類並覆蓋它的'onCreateView()' – ZeekHuge

+0

@Vanna它實際上是在onCreateView。我從我通過的Bundle中獲取顏色int。 – TJBlack31

回答

2

您可以CardView作爲您的自定義DialogFragment佈局的父容器。下面是一個簡單的例子:

@NonNull 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     Dialog dialog = super.onCreateDialog(savedInstanceState); 
     dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); 
     dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE); 
     return dialog; 
    } 

現在,以後你可以做一個圓角,你可以改變:

custom_dialog.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/card_view" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    app:cardCornerRadius="8dp" 
    app:cardElevation="10dp" 
    app:cardUseCompatPadding="true"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:gravity="center" 
     android:orientation="vertical"> 
     //Put all your views here 

    </LinearLayout> 
</android.support.v7.widget.CardView> 
在你的類,它擴展 DialogFragment覆蓋 onCreateDialog這樣

現在CardView的背景顏色。試試:)

+0

這是一個好主意,我會給它一個鏡頭!謝謝 – TJBlack31

+0

歡迎。如果它對你有幫助。請用綠色勾號標記我的答案:) –

+0

@sagur suri偉大的解決方案!謝謝。 – TJBlack31

相關問題