2017-08-08 75 views
1

これをかなり調べましたが、レイヤリストでの私の経験はまだ分かりません。ここに私の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); 

しかし、私は、コードの後半で、それの色を変えることについてどのように行きますか?

おかげで、

T

+0

そのクラスを拡張し、その 'onCreateView()'をオーバーライドすることができます – ZeekHuge

+0

@Vanna実際にはonCreateViewで後でオンになります。私は渡すバンドルから色を取得しています。 – TJBlack31

答えて

2

あなたは、カスタムDialogFragmentのレイアウトの親コンテナとしてCardViewを作ることができます。今、後であなたに

@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; 
    } 

丸みを帯びたコーナーを作ることができますし、変更することができます。

このよう DialogFragmentオーバーライド onCreateDialogを拡張し、あなたのクラスで今

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> 

:ここでは簡単な例でありますCardViewの背景色です。試してみてください:)

+0

これは素晴らしいアイデアです、私はそれを撃つでしょう!ありがとうございます – TJBlack31

+0

ようこそ。それはあなたに役立った場合。緑のダニで私の答えをマークしてください:) –

+0

@サグルーリー素晴らしい解決策!ありがとうございました。 – TJBlack31

関連する問題