13

私はあなたの問題を助けてくれることを願っています。私はそれをgoogleにしようとしましたが、ここで話題を調べましたが、答えを見つけることができませんでした。DialogFragmentにConstraintLayoutを表示

最近私のレイアウトをConstraintLayoutsに変更しました。しかし、私の問題はDialogFragmentsLinearLayoutと表示されていましたが、ConstraintLayoutに変更したときには、レイアウト内の要素の色付きオーバーレイのみが表示されます。幅と高さを100dpのようなものにハードコードすると、その領域が表示されます。私がmatch_parentまたは他の組み合わせを試すと、同じ問題が適用されます。私はまた、高さと幅をデバイスの高さと幅に設定しようとしましたが、まだ運がありません。

私は持っている私のCreateWeddingMetadataFragmentでonCreateViewで

私は私のCreateWeddingMetadataFragmentDialogで
createButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Log.d(TAG, "Show message dialog"); 

      FragmentManager fm = getFragmentManager(); 
      CreateWeddingMetadataDialogFragment welcomeMessageDialog = new CreateWeddingMetadataDialogFragment(); 
      welcomeMessageDialog.show(fm, "metadate_fragment_dialog"); 
      welcomeMessageDialog.setOnDismissListener(new DialogInterface.OnDismissListener() { 
       @Override 
       public void onDismiss(DialogInterface dialog) { 
       } 
      }); 

:デバイスに設定するの私の現在の試みである

public class CreateWeddingMetadataDialogFragment extends DialogFragment{ 

private static final String TAG = CreateWeddingMetadataDialogFragment.class.getSimpleName(); 

public Button setupNow, setupLater; 
public TextView mTest; 
public ConstraintLayout parentLayout; 

private DialogInterface.OnDismissListener onDismissListener; 



public void setOnDismissListener(DialogInterface.OnDismissListener onDismissListener) { 
    this.onDismissListener = onDismissListener; 
} 

@Override 
public void onDismiss(DialogInterface dialog) { 
    super.onDismiss(dialog); 
    if (onDismissListener != null) { 
     onDismissListener.onDismiss(dialog); 
    } 
} 

@Override 
public void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Log.d(TAG, "I was called"); 
} 

public CreateWeddingMetadataDialogFragment(){} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.create_welcome_message_view, container); 

    setupNow = (Button) view.findViewById(R.id.setupNowButton); 
    setupLater = (Button) view.findViewById(R.id.setupLaterButton); 
    mTest = (TextView) view.findViewById(R.id.welcomeMessageTitle); 
    parentLayout = (ConstraintLayout) view.findViewById(R.id.clWelcomeMessage); 

    DisplayMetrics displayMetrics = getResources().getDisplayMetrics(); 
    int width = displayMetrics.widthPixels; 
    int height = displayMetrics.heightPixels; 

    parentLayout.setMinimumWidth(width); 
    parentLayout.setMinimumHeight(height); 

    mTest.setText("Test"); 
    Log.d(TAG, "I was called onCreateView" + mTest); 

    setupNow.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      //Go to metadate page (Hide this dialog) 
     } 
    }); 

    setupLater.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      //Go to signin page and create the wedding 
     } 
    }); 


    return view; 
} 

}

サイズ。ここ

そして

はcreate_welcome_message_viewです:

<?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:layout_width="match_parent" 
             android:layout_height="match_parent" 
             xmlns:tools="http://schemas.android.com/tools" 
             android:orientation="vertical" 
             android:id="@+id/clWelcomeMessage"> 



<Button 
    android:text="DET GØR JEG SENERE" 
    android:layout_width="0dp" 
    android:layout_height="0dp" 
    android:id="@+id/setupLaterButton" 
    app:layout_constraintTop_toTopOf="@+id/guideline19" 
    app:layout_constraintBottom_toTopOf="@+id/guideline20" 
    android:layout_marginEnd="16dp" 
    app:layout_constraintRight_toRightOf="parent" 
    android:layout_marginRight="16dp" 
    android:layout_marginStart="16dp" 
    app:layout_constraintLeft_toLeftOf="parent" 
    android:layout_marginLeft="16dp" 
    android:background="@drawable/border" 
    android:layout_marginTop="2dp" 
    android:textColor="@color/colorPrimaryDark"/> 

<Button 
    android:text="JEG VIL OPSÆTTE DEN NU" 
    android:layout_width="0dp" 
    android:layout_height="0dp" 
    android:id="@+id/setupNowButton" 
    app:layout_constraintTop_toTopOf="@+id/guideline12" 
    app:layout_constraintBottom_toTopOf="@+id/guideline19" 
    android:layout_marginEnd="16dp" 
    app:layout_constraintRight_toRightOf="parent" 
    android:layout_marginRight="16dp" 
    android:layout_marginStart="16dp" 
    app:layout_constraintLeft_toLeftOf="parent" 
    android:layout_marginLeft="16dp" 
    android:background="@color/colorPrimaryDark" 
    android:layout_marginBottom="2dp" 
    android:textColor="@color/White"/> 

<TextView 
    android:text="EN PERSONLIG VELKOMST" 
    android:layout_width="0dp" 
    android:layout_height="0dp" 
    android:id="@+id/welcomeMessageTitle" 
    android:layout_marginTop="16dp" 
    app:layout_constraintTop_toTopOf="parent" 
    android:layout_marginEnd="32dp" 
    app:layout_constraintRight_toRightOf="parent" 
    android:layout_marginRight="32dp" 
    android:layout_marginStart="32dp" 
    app:layout_constraintLeft_toLeftOf="parent" 
    android:layout_marginLeft="32dp" 
    app:layout_constraintBottom_toTopOf="@+id/textView5" 
    android:layout_marginBottom="8dp" 
    android:textAlignment="center" 
    android:textSize="16sp"/> 

<TextView 
    android:text="Nu skal I definere den velkomst, som jeres gæster får i appen. I kan skrive navnet på brylluppet, en hlsen og har mulighed at vælge et coverbillede" 
    android:layout_width="0dp" 
    android:layout_height="0dp" 
    android:id="@+id/textView5" 
    app:layout_constraintTop_toTopOf="@+id/guideline14" 
    android:layout_marginEnd="32dp" 
    app:layout_constraintRight_toRightOf="parent" 
    android:layout_marginRight="32dp" 
    app:layout_constraintBottom_toTopOf="@+id/textView6" 
    android:layout_marginBottom="8dp" 
    android:layout_marginStart="32dp" 
    app:layout_constraintLeft_toLeftOf="parent" 
    android:layout_marginLeft="32dp" 
    android:textAlignment="center"/> 

<android.support.constraint.Guideline 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/guideline12" 
    android:orientation="horizontal" 
    tools:layout_editor_absoluteY="204dp" 
    tools:layout_editor_absoluteX="0dp" 
    app:layout_constraintGuide_percent="0.4"/> 

<TextView 
    android:text="Du vil altid kunne ændre din opsætning af velkomsten i din brugerprofil." 
    android:layout_width="0dp" 
    android:layout_height="0dp" 
    android:id="@+id/textView6" 
    app:layout_constraintBottom_toTopOf="@+id/guideline12" 
    android:layout_marginBottom="8dp" 
    app:layout_constraintTop_toTopOf="@+id/guideline15" 
    android:layout_marginStart="32dp" 
    app:layout_constraintLeft_toLeftOf="parent" 
    android:layout_marginLeft="32dp" 
    android:layout_marginEnd="32dp" 
    app:layout_constraintRight_toRightOf="parent" 
    android:layout_marginRight="32dp" 
    android:textAlignment="center" 
    app:layout_constraintHorizontal_bias="0.0" 
    app:layout_constraintVertical_bias="1.0"/> 

<android.support.constraint.Guideline 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/guideline14" 
    android:orientation="horizontal" 
    tools:layout_editor_absoluteY="51dp" 
    tools:layout_editor_absoluteX="0dp" 
    app:layout_constraintGuide_percent="0.1"/> 

<android.support.constraint.Guideline 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/guideline15" 
    android:orientation="horizontal" 
    tools:layout_editor_absoluteY="153dp" 
    tools:layout_editor_absoluteX="0dp" 
    app:layout_constraintGuide_percent="0.3"/> 

<android.support.constraint.Guideline 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/guideline19" 
    android:orientation="horizontal" 
    tools:layout_editor_absoluteY="255dp" 
    tools:layout_editor_absoluteX="0dp" 
    app:layout_constraintGuide_percent="0.5"/> 

<android.support.constraint.Guideline 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/guideline20" 
    android:orientation="horizontal" 
    tools:layout_editor_absoluteY="305dp" 
    tools:layout_editor_absoluteX="0dp" 
    app:layout_constraintGuide_percent="0.6"/> 

</android.support.constraint.ConstraintLayout> 

何か追加情報が私に知らせて、事前に感謝必要がある場合。

+0

私はそれがConstraintLayoutのバグだと確信しています。 FrameLayoutでレイアウトをラップし、ConstraintLayoutの固定サイズを設定すると、ビューが表示されます。 – Outofdate

答えて

1

これは正常に動作します -

1をチェックアウト)可視化とその良い練習が可能な場合はXMLであまりに順にアイテムを配置します。後で簡単に理解するだけです。 2)他のすべての要素の外観は、他の要素の高さと幅に制限されており、大部分は高さと幅が0になります。 LayoutParamsの0dpとwrap_contentに注意してください。 3)Vertical Biasもサポートしてください。

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout 
android:id="@+id/clWelcomeMessage" 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical"> 

<android.support.constraint.Guideline 
    android:id="@+id/guideline_ver_16" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    app:layout_constraintGuide_begin="@dimen/sixteenDP"/> 
<android.support.constraint.Guideline 
    android:id="@+id/guideline_ver_end_16" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    app:layout_constraintGuide_end="@dimen/sixteenDP"/> 

<TextView 
    android:id="@+id/welcomeMessageTitle" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="8dp" 
    android:layout_marginEnd="32dp" 
    android:layout_marginLeft="32dp" 
    android:layout_marginRight="32dp" 
    android:layout_marginStart="32dp" 
    android:layout_marginTop="16dp" 
    android:text="EN PERSONLIG VELKOMST" 
    android:textAlignment="center" 
    android:textSize="16sp" 
    app:layout_constraintBottom_toTopOf="@+id/textView5" 
    app:layout_constraintHorizontal_bias="0.5" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    app:layout_constraintTop_toTopOf="parent"/> 

<android.support.constraint.Guideline 
android:id="@+id/guideline1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:orientation="horizontal" 
app:layout_constraintGuide_percent="0.1"/> 
<android.support.constraint.Guideline 
android:id="@+id/guideline2" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:orientation="horizontal" 
app:layout_constraintGuide_percent="0.2"/> 

<TextView 
android:id="@+id/textView5" 
android:layout_width="0dp" 
android:layout_height="wrap_content" 
android:layout_marginBottom="8dp" 
android:text="Nu skal I definere den velkomst, som jeres gæster får i 
appen. 
I kan skrive navnet på brylluppet, en hlsen og har mulighed at vælge et 
coverbillede" 
android:textAlignment="center" 
app:layout_constraintEnd_toEndOf="@+id/guideline_ver_end_16" 
app:layout_constraintHorizontal_bias="0.5" 
app:layout_constraintStart_toStartOf="@+id/guideline_ver_16" 
app:layout_constraintTop_toBottomOf="@+id/guideline2"/> 

<TextView 
android:id="@+id/textView6" 
android:layout_width="0dp" 
android:layout_height="wrap_content" 
android:layout_marginBottom="8dp" 
android:layout_marginEnd="16dp" 
android:layout_marginLeft="16dp" 
android:layout_marginRight="16dp" 
android:layout_marginStart="16dp" 
android:layout_marginTop="8dp" 
android:text="Du vil altid kunne ændre din opsætning af velkomsten i din 
brugerprofil." 
android:textAlignment="center" 
app:layout_constraintBottom_toTopOf="@+id/setupNowButton" 
app:layout_constraintHorizontal_bias="0.0" 
app:layout_constraintLeft_toLeftOf="@+id/guideline_ver_16" 
app:layout_constraintRight_toRightOf="@+id/guideline_ver_end_16" 
app:layout_constraintTop_toBottomOf="@+id/textView5"/> 

<Button 
android:id="@+id/setupNowButton" 
android:layout_width="0dp" 
android:layout_height="wrap_content" 
android:layout_marginBottom="8dp" 
android:layout_marginEnd="16dp" 
android:layout_marginLeft="16dp" 
android:layout_marginRight="16dp" 
android:layout_marginStart="16dp" 
android:layout_marginTop="8dp" 
android:background="@color/colorPrimaryDark" 
android:text="JEG VIL OPSÆTTE DEN NU" 
android:textColor="@color/White" 
app:layout_constraintBottom_toTopOf="@+id/setupLaterButton" 
app:layout_constraintHorizontal_bias="0.0" 
app:layout_constraintLeft_toLeftOf="parent" 
app:layout_constraintRight_toRightOf="parent" 
app:layout_constraintTop_toBottomOf="@+id/textView6" 
app:layout_constraintVertical_bias="1.0"/> 


<android.support.constraint.Guideline 
android:id="@+id/guideline6" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:orientation="horizontal" 
app:layout_constraintGuide_percent="0.6"/> 

<Button 
    android:id="@+id/setupLaterButton" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="8dp" 
    android:layout_marginEnd="16dp" 
    android:layout_marginLeft="16dp" 
    android:layout_marginRight="16dp" 
    android:layout_marginStart="16dp" 
    android:text="DET GØR JEG SENERE" 
    android:background="@drawable/border" 
    android:textColor="@color/colorPrimaryDark" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintHorizontal_bias="0.5" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    app:layout_constraintTop_toTopOf="@+id/guideline6" 
    app:layout_constraintVertical_bias="1.0"/> 

</android.support.constraint.ConstraintLayout> 
また

app:layout_constraintWidth_default="wrap"(を0dpに設定幅)。設定されている場合、ウィジェットはwrap_contentを使用する場合と同じサイズになりますが、制約によって制限されます(つまり、それを超えて拡張されません)。 Supporting resource

+0

ねえ。答えをありがとう。 (当時の)現在のバージョンの制約レイアウトのバグでした。 –

関連する問題