2017-09-20 6 views
0

私はDialogを拡張してsetContentView()を使用してカスタムダイアログを作成しています。問題は、ダイアログを表示しようとすると、私のカスタムレイアウトの代わりに背景の影だけが表示されることです。私はRelativeLayoutでラップして表示するカスタムレイアウトを取得することができましたが、私が間違っているよりよい解決策があるかどうかは疑問です。 constraintLayoutバージョン1.0.2を使用しています。ありがとう!ここでカスタムAndroidダイアログでConstraintLayoutを使用

は私のカスタムダイアログです。ここで

class EventsFilterDialog(context: Context): Dialog(context) { 
    init { 
     setContentView(R.layout.dialog_events_filter) 
     setCancelable(true) 
    } 
} 

はまったく同じ結果がある私のR.layout.dialog_events_filterの簡易版である:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:background="@color/white" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <TextView 
     android:id="@+id/headerTv" 
     android:text="@string/events_filters" 
     android:textColor="@color/white" 
     android:textSize="18sp" 
     android:textStyle="bold" 
     android:gravity="center" 
     android:background="@color/colorPrimaryLight" 
     android:padding="16dp" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" /> 

    <View 
     android:id="@+id/middleView" 
     android:layout_width="0dp" 
     android:layout_height="256dp" 
     app:layout_constraintTop_toBottomOf="@+id/headerTv" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" /> 

    <TextView 
     android:id="@+id/closeTv" 
     android:text="@string/close" 
     android:textColor="@color/white" 
     android:textAllCaps="true" 
     android:textStyle="bold" 
     android:gravity="center" 
     android:background="@color/colorPrimaryLight" 
     android:layout_width="0dp" 
     android:layout_height="48dp" 
     app:layout_constraintTop_toBottomOf="@+id/middleView" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toLeftOf="@+id/applyTv" /> 

    <TextView 
     android:id="@+id/applyTv" 
     android:text="@string/apply_filter" 
     android:textColor="@color/white" 
     android:textAllCaps="true" 
     android:textStyle="bold" 
     android:gravity="center" 
     android:background="@color/colorAccent" 
     android:layout_width="0dp" 
     android:layout_height="48dp" 
     app:layout_constraintTop_toBottomOf="@+id/middleView" 
     app:layout_constraintLeft_toRightOf="@+id/closeTv" 
     app:layout_constraintRight_toRightOf="parent"/> 

</android.support.constraint.ConstraintLayout> 

答えて

2

実行時にダイアログのウィンドウのLayoutParamsを設定します。これは私のために働いた。

dialog.setContentView(R.layout.dialog_select_location); 
Window window = dialog.getWindow(); 
window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
window.setGravity(Gravity.CENTER); 

運が良かった!

0

をそれはあなたの場合は動作しているようですmatch_parentを使用する代わりに親のConstraintLayoutに幅を設定します。それが私が見つけた最高の解決策です。

関連する問題