I hope you can help me out with a problem. I tried to google it, and looked through the topics here, but was unable to find an answer.
I recently changed my layouts to ConstraintLayouts
, and this have been working great so far. My problem however is i had some DialogFragments
displaying a LinearLayout
, and when i changed it to ConstraintLayout
i only shows a faded overlay, but non of the elements in the layout. If i hardcode the width and height to something like 100dp
, it will display that area. When i try match_parent
or any other combination the same problem applies. I also tried setting the height and width to the device height and width but still with no luck.
In the onCreateView in my CreateWeddingMetadataFragment i have:
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) { } });
In my CreateWeddingMetadataFragmentDialog i have:
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; }
}
That is with my current try of setting it to the device size.
And here is the 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>
If you need any additional information let me know, and thanks in advance.
you can set your args. class IntervModifFragment : DialogFragment(), ModContract. View { companion object { fun newInstance( plom:String,type:String,position: Int):IntervModifFragment { val fragment =IntervModifFragment() val args = Bundle() args. putString( "1",plom) args.
Constraints define the relation between two different view elements, and chains can be used dictate the spacing between them. In addition, guidelines can be used to create percentage-based layouts. Most of what can be achieved in LinearLayout and RelativeLayout can be done in ConstraintLayout.
A ConstraintLayout is a ViewGroup which allows you to position and size widgets in a flexible way. Note: ConstraintLayout is available as a support library that you can use on Android systems starting with API level 9 (Gingerbread).
Show activity on this post. Dialog: A dialog is a small window that prompts the user to make a decision or enter additional information. DialogFragment: A DialogFragment is a special fragment subclass that is designed for creating and hosting dialogs.
You can create a DialogFragment and display a dialog by overriding onCreateView () , either giving it a layoutId as you would with a typical fragment or using the DialogFragment constructor. The View returned by onCreateView () is automatically added to the dialog.
This is typically used for displaying an alert dialog, a confirm dialog, or prompting the user for information within an overlay without having to switch to another Activity. DialogFragment is now the canonical way to display overlays; using Dialog directly is considered bad practice.
It's because DialogFragment ignores onCreateView () if you override onCreateDialog (), as it assumes the dialog will take care of its own view. As the docs say:
Now to use ConstraintLayout features in our android project, we will need to add the library to our build.gradle app module dependencies section. In Android Studio design and blueprint mode are added which display the layout design in design and blueprint mode. You can enable any mode or both together according to your requirement.
This works fine - check out
1) Its good practice to arrange items in order where possible in XML too as visualized. Just to easily comprehend later. 2) Its looks every other element is constraining itself to others height and width and mostly resulting in 0 height and width. Watch out for 0dp and wrap_content on LayoutParams. 3) Take support of Vertical Bias too.
<?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>
Also, app:layout_constraintWidth_default="wrap"
(with width set to 0dp). If set, the widget will have the same size as if using wrap_content, but will be limited by constraints (i.e. it won't expand beyond them). Supporting resource
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With