2016-06-20 34 views
5

Saydam-siyah arka plan eklediğim bir "tam ekran" DialogFragment oluşturdum.Android Tam Ekran Parçası İletişim Kutusu Hata

@Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     Dialog dialog = super.onCreateDialog(savedInstanceState); 
     dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE); 
     return dialog; 
    } 



    @Override 
    public void onStart() { 
     super.onStart(); 
     Dialog dialog = getDialog(); 
     if (dialog != null) { 
      dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); 
      dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 
     } 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
      // if >= LOLLIPOP, then I color the the statusbar 
dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 
      dialog.getWindow().setStatusBarColor(SOME_COLOR_HERE); 
     } 

    } 

@Override 
    public void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setStyle(DialogFragment.STYLE_NO_TITLE, R.style.DialogFullScreen); 
    } 

Bu benim setStyle() ayarlanmış tema: Ben bunu nasıl yaptığını

İşte enter image description here

var: Sonuçta aşağıdaki ekran görülebilir

<style name="DialogFullScreen"> 
    <item name="android:windowIsFloating">false</item> 
    <item name="android:windowContentOverlay">@null</item> 
</style> 

Ve bu, parça için şişirdiğim düzendir:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="br.com.emotiondigital.sempreeditora.Fragments.LockedContentFragment" 
android:id="@+id/popup_parent_layout"> 


<LinearLayout 
    android:clickable="true" 
    android:id="@+id/popup_black_bg" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#b9000000"/> 

<RelativeLayout 
    android:id="@+id/popup_main_layout" 
    android:clickable="true" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:background="@android:color/white" 
    android:elevation="10dp" 
    android:layout_marginBottom="70dp" 
    android:layout_marginTop="70dp" 
    > 


    <LinearLayout 
     android:layout_alignTop="@+id/bg_popup" 
     android:layout_alignBottom="@+id/bg_popup" 
     android:layout_alignRight="@+id/bg_popup" 
     android:layout_alignLeft="@+id/bg_popup" 
     android:background="@color/bg_grey" 
     android:layout_width="280dp" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="51dp" 
      android:orientation="vertical" 
      android:background="@android:color/white" 
      android:elevation="2dp" 
      > 

      <TextView 
       android:id="@+id/selectNewspaperText" 
       android:layout_width="wrap_content" 
       android:layout_height="50dp" 
       android:gravity="center" 
       android:text="@string/selecione_jornal" 
       android:layout_marginLeft="15dp" 
       android:textSize="20dp" 
       android:textColor="@color/colorPrimary" 
       /> 

      <LinearLayout 
       android:orientation="vertical" 
       android:id="@+id/topLine" 
       android:layout_width="match_parent" 
       android:layout_height="1dp" 
       android:background="@color/colorPrimaryDark"/> 

     </LinearLayout> 

     <android.support.v7.widget.RecyclerView 
      android:overScrollMode="ifContentScrolls" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/recyclerViewJornais" 
      /> 

     <LinearLayout 
      android:orientation="vertical" 
      android:id="@+id/bottomLine" 
      android:layout_width="match_parent" 
      android:layout_height="1dp" 
      android:background="@color/colorPrimaryDark"/> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="50dp" 
      android:orientation="horizontal"> 

      <Button 
       android:id="@+id/btnCancelar" 
       android:layout_width="0dp" 
       android:layout_height="match_parent" 
       android:layout_weight="1" 
       android:background="@android:color/white" 
       android:textColor="@color/colorPrimary" 
       android:text="@string/cancelar"/> 

      <Button 
       android:id="@+id/btnOk" 
       android:layout_width="0dp" 
       android:layout_height="match_parent" 
       android:layout_weight="1" 
       android:textColor="@android:color/white" 
       android:background="@color/colorPrimary" 
       android:text="@string/ok"/> 

     </LinearLayout> 




    </LinearLayout> 



</RelativeLayout> 

olanlar ekran görüntüleri bile bazı düşük sonunda Samsung 4.2 cihazlar üzerinde test, birçok cihazlarında Android 5.1 Bu iyi çalışıyor çalıştıran bir Xperia Z3 idi. Sorun şu ki, Android 5.1 ile birlikte bir Nexus 4 üzerinde çalışmıyor. Nexus 4'te şeffaflık çalışmıyor gibi görünüyor ve görünüm arka planda birçok kez çoğaltıyor. İşte

enter image description here

Xperia Z3 ve Nexus 4 arasında başka karşılaştırma var: Burada bir ekran görüntüsü var

enter image description here

enter image description here

Nexus 4 neler oluyor? Herhangi bir yardım için teşekkür ederiz!

+0

Bu garip bir grafik hatasıdır, ancak neden ilk etapta bir "tam ekran" iletişim kutusu kullanıyorsunuz? Bir iletişim kutusunun varsayılan davranışını çoğalttığınız gibi görünüyor (iletişim kutusu varsayılan olarak arka planı karartır). – Bryan

+0

@Bryan Görüşümün tüm yönlerini kontrol etmeyi seviyorum. Örneğin, bu şekilde arka planı bir görünüm olarak kontrol edebilir ve çalışma zamanında opaklığını canlandırabilirim. Bazı ilginç etkiler yaratmak için bunu kullanıyorum. –

cevap

0

İletişim için özel bir düzen oluşturun, sonra onCreate veya iletişim yönteminin ilkinde aşağıdaki kodu kullanın.

Onun çalışması benim için. Diyalog tam ekran oluşturmak için bir yöntem kullandım.

İlgili konular