web-dev-qa-db-ja.com

DialogFragmentでのConstraintLayoutの表示

私はあなたが問題で私を助けることができることを願っています。私はそれをグーグルで検索し、ここのトピックを調べましたが、答えを見つけることができませんでした。

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

CreateWeddingMetadataFragmentのonCreateViewには、次のものがあります。

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

私のCreateWeddingMetadataFragmentDialogには、次のものがあります。

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>

追加情報が必要な場合はお知らせください。事前に感謝します。

23
Jesper Purup

これは正常に機能します-チェックアウト

1)視覚化されたXMLでも、可能な場合はアイテムを順番に配置することをお勧めします。後で簡単に理解するためだけに。 2)他のすべての要素が他の要素の高さと幅に制約されており、ほとんどの場合、高さと幅が0になっているように見えます。 LayoutParamsの0dpとwrap_contentに注意してください。 3)垂直バイアスもサポートします。

<?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"widthを0dpに設定)。設定されている場合、ウィジェットはwrap_contentを使用する場合と同じサイズになりますが、制約によって制限されます(つまり、ウィジェットは制約を超えて拡張されません)。 サポートリソース

2
Johnny