2016-09-04 37 views
2

我不能在API 19上設置背景透明,而是我得到一個白色的背景。背景僅在API 21及以上版本中透明。背景API 19上不透明

我有一個調用自定義對話框片段的活動。對話框片段的父級佈局有background="@android:color/transparent"

我在做什麼錯?我錯過了什麼。任何提示提示將非常有幫助。

解決方案,我曾嘗試:

改變原色到透明上MyActivityTheme

父佈局background="@null"

Dialog with transparent background in Android

How to make any view background transparent?

https://mindofaandroiddev.wordpress.com/2013/12/28/making-the-status-bar-and-navigation-bar-transparent-with-a-listview-on-android-4-4-kitkat/

MyDialogFragment

public class MyDialogFragment : DialogFragment 
    {  
     public override void OnCreate(Bundle savedInstanceState) 
     { 
      base.OnCreate(savedInstanceState); 
      SetStyle(DialogFragmentStyle.NoTitle, Resource.Style.MyDialogTheme); 
     } 

     public override Dialog OnCreateDialog(Bundle savedInstanceState) 
     { 
      var builder = new AlertDialog.Builder(Activity); 

      var inflater = Activity.LayoutInflater; 

      var dialogView = inflater.Inflate(Resource.Layout.MyDialogLayout, null); 

      if (dialogView != null) 
      {  
       builder.SetView(dialogView); 
      } 

      var dialog = builder.Create(); 
      dialog.Window.RequestFeature(WindowFeatures.NoTitle); 
      dialog.Window.SetBackgroundDrawable(new ColorDrawable(Android.Graphics.Color.Transparent)); 

      return dialog; 
     } 
    } 

MyDialogLayout

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:background="@android:color/transparent" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
    <!-- Child layouts -->  
</LinearLayout> 

Styles.xml

<style name="MyActivityTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
     <item name="colorPrimary">@color/Red</item> 
     <item name="colorAccent">@color/White</item> 
     <item name="colorControlNormal">@color/White</item> 
     <item name="colorControlActivated">@color/White</item> 
     <item name="android:textColorHint">@color/White</item> 
     <item name="android:background">@android:color/transparent</item> 
     <item name="android:windowTranslucentStatus">true</item> 
     <item name="android:windowTranslucentNavigation">true</item> 
</style> 

<style name="MyDialogTheme" parent="android:Theme.Holo.Light.Dialog.NoActionBar"> 
     <item name="colorPrimary">@android:color/transparent</item> 
     <item name="colorAccent">@color/Red</item> 
     <item name="colorControlNormal">@color/Red</item> 
     <item name="colorControlActivated">@color/Red</item> 
     <item name="colorControlHighlight">@color/Red</item> 
     <item name="android:windowNoTitle">true</item> 
     <item name="android:textColorPrimary">@color/Red</item> 
</style> 
+0

你希望背景透明的對話框? – Naz141

+0

是的,我願意。背景僅在API 22和更高版本上透明,但不在API 19上。 – PLOW

+0

只需使用代碼嘗試替換即可。 'dialog.getWindow()。setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));' – Naz141

回答

-1

我認爲你需要在你的onResume添加此代碼()方法:

public override void OnResume() 
     { 
       base.OnResume(); 
       // Auto size the dialog based on it's contents 
       Dialog.Window.SetLayout(LinearLayout.LayoutParams.MatchParent, LinearLayout.LayoutParams.WrapContent); 
       Dialog.Window.SetGravity(GravityFlags.Bottom); 
       // Make sure there is no background behind our view 
       Dialog.Window.SetBackgroundDrawable(new ColorDrawable(Color.Transparent)); 
       // Disable standard dialog styling/frame/theme: our custom view should create full UI 
       SetStyle(Android.Support.V4.App.DialogFragment.StyleNoFrame, Android.Resource.Style.Theme); 
     } 

希望它有幫助;)

+0

這沒有幫助。我添加了它,並保持其他一切。 – PLOW