2016-09-04 2 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 (новый 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

Смежные вопросы