2013-10-04 140 views
4

我已經顯示了一個對話框片段。我已經做到了,但我想將背景(主題)顏色灰色更改爲白色。如何更改默認片段對話框的主題顏色

enter image description here 我的對話框代碼:

public class TestDialog extends DialogFragment { 

public static TestDialog newInstance() { 
    return new TestDialog(); 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setStyle(DialogFragment.STYLE_NORMAL, R.style.MyDialog); 
} 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    return container; 
} 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
      //setStyle(DialogFragment.STYLE_NORMAL, R.style.MyDialog); 
    LayoutInflater inflater = getActivity().getLayoutInflater(); 
    builder.setView(inflater.inflate(R.layout.dailog_fragment, null)) 
    .setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int id) { 
     } 
    }) 
    .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int id) { 
      TestDialog.this.getDialog().cancel(); 
     } 
    });  
    return builder.create(); 
} 

}

回答

2

我得到了解決:

我使用下面的風格主題設置的白色背景顏色。

<style name="MyFragment"> 
     <item name="android:windowFrame">@null</item> 
     <item name="android:windowBackground">@android:color/transparent</item> 
     <item name="android:windowIsTranslucent">true</item> 
     <item name="android:windowIsFloating">true</item> 
     <item name="android:windowContentOverlay">@null</item> 
     <item name="android:windowTitleStyle">@null</item> 
     <item name="android:colorBackground">@android:color/white</item> 
     <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> 
     <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item> 
     <item name="android:backgroundDimEnabled">true</item> 
    </style> 

我們也可以用全息主題

AlertDialog.Builder builder = new AlertDialog.Builder(ProfileEditActionBar.this, AlertDialog.THEME_HOLO_LIGHT); 
1

使用本

setStyle(DialogFragment.STYLE_NO_TITLE, R.style.MyDialog); 

,然後進行自定義MyDialog風格。

<resources xmlns:android="http://schemas.android.com/apk/res/android"> 

    <style name="MyDialog" parent="@android:style/Theme.Dialog"> 
     <item name="android:windowFrame">@null</item> 
     <item name="android:windowBackground">@color/orange_transparent</item> 
     <item name="android:windowIsFloating">false</item> 
     <item name="android:windowContentOverlay">@null</item> 
     <item name="android:windowTitleStyle">@null</item> 
     <item name="android:colorBackgroundCacheHint">@null</item> 
     <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> 
     <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item> 
     <item name="android:gravity">center</item> 
    </style> 

</resources> 

請注意,它應該在style.xml

+0

我做同樣的事情,但它不工作... – hharry

+1

你設置'的setStyle(DialogFragment.STYLE_NO_TITLE,R.style.MyDialog) ;'在OnCreate'中? –

+0

是的,我在onCreate中設置了這個方法... – hharry

0

在您的清單文件中,對話活動的活動定義添加android:theme屬性,如下所示。

<activity 
     android:name=".YourActivityName" 

     android:theme="@styles/style" 

     /> 
相關問題