2016-06-20 3 views
5

"fullscreen"DialogFragment를 만들었습니다. 여기에 투명 검정색 배경을 추가했습니다.Android 전체 화면 단편 대화 상자 버그

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

이 내가의 setStyle()에 설정된 테마는 다음과 같습니다 : 나는 그것을 만들 었는지

여기 enter image description here

가있다 : 최종 결과는 아래 스크린 샷에서 볼 수

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

그리고 이것은 조각을 위해 부풀려진 레이아웃입니다 :

<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> 
,451,515,

그 스크린 샷 심지어 일부 저가형 삼성 4.2 장치에서 테스트, 많은 장치에 안드로이드 5.1이 제대로 작동 실행하는 엑스 페리아 Z3에서 있었다. 문제는 Android 5.1에서도 Nexus 4에서 작동하지 않는다는 것입니다. Nexus 4에서는 투명도가 작동하지 않는 것으로 보이고 배경이 여러 번 복제됩니다. 여기

enter image description here

를 엑스 페리아 Z3와 넥서스 4와 다른 비교의 : 여기에 스크린 샷입니다

enter image description here

enter image description here

는 넥서스 4에 무슨 일이에요? 도움을 주시면 감사하겠습니다.

+0

이상한 그래픽 결함이지만 왜 처음에는 "전체 화면"대화 상자를 사용하고 있습니까? 대화 상자의 기본 동작을 복제하는 것처럼 보입니다 (대화 상자는 기본적으로 배경을 어둡게합니다). – Bryan

+0

@ 브라이언 나는 내 견해의 모든 측면을 통제하는 것을 좋아합니다. 예를 들어, 이렇게하면 배경을 뷰로 제어하고 런타임시 불투명도를 애니메이션으로 적용 할 수 있습니다. 재미있는 효과를 내기 위해이 방법을 사용합니다. –

답변

0

대화 상자에 대한 사용자 정의 레이아웃을 만들고 onCreate 또는 대화 상자 메서드의 첫 번째 코드에서 아래 코드를 사용하십시오.

Dialog dialog = new Dialog(context); 
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     dialog.setContentView(R.layout.your_dialog_layout); 
     dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); 

저의 작품입니다. 대화창 전체 화면을 만드는 방법을 사용했습니다.

관련 문제