The question is published on by Tutorial Guruji team.
I have an AlertDialog that has a custom view and here is the view:
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="fill_parent" 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"> <androidx.appcompat.widget.Toolbar android:background="@color/grey_1" android:id="@+id/edit_point_toolbar" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toTopOf="@id/edit_scrollView" android:layout_width="match_parent" android:layout_height="wrap_content"> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/edit_point_close" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" android:src="@drawable/ic_close_red_32dp" android:layout_margin="4dp" android:clickable="true" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView app:layout_constraintRight_toLeftOf="@id/edit_point_close" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" android:text="Edit point" android:textColor="@color/black" android:textSize="15dp" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </androidx.constraintlayout.widget.ConstraintLayout> </androidx.appcompat.widget.Toolbar> <androidx.core.widget.NestedScrollView android:id="@+id/edit_scrollView" app:layout_constraintTop_toBottomOf="@id/edit_point_toolbar" android:layout_width="match_parent" app:layout_constraintBottom_toBottomOf="parent" android:layout_height="0dp"> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="8dp"> <EditText android:id="@+id/edit_point_name" app:layout_constraintTop_toTopOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintBottom_toTopOf="@id/save_edit_point" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:minLines="3" android:textDirection="rtl" android:background="@drawable/new_book_text_box" android:gravity="right|top" android:textAlignment="gravity" android:textAppearance="@style/TextAppearance.AppCompat.Medium" /> <Button app:layout_constraintTop_toBottomOf="@id/edit_point_name" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintLeft_toLeftOf="parent" android:id="@+id/save_edit_point" android:layout_width="0dp" app:layout_constraintWidth_percent="0.7" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginTop="16dp" android:layout_marginBottom="8dp" android:backgroundTint="@color/green_500" android:text="Confirm" android:textColor="#FFF" /> </androidx.constraintlayout.widget.ConstraintLayout> </androidx.core.widget.NestedScrollView> </androidx.constraintlayout.widget.ConstraintLayout>
In the xml design screen I can see the Toolbar and the NestedScrollView content normally but in my app the NestedScrollView isn’t showing and I can just see the toolbar.
Here is the AlertDialog code:
AlertDialog.Builder builder = new AlertDialog.Builder(context , R.style.Theme_Dialog); ViewGroup viewGroup = view.findViewById(android.R.id.content); View dialogView = LayoutInflater.from(view.getContext()).inflate(R.layout.edit_point_dialog , viewGroup, false); builder.setView(dialogView); AlertDialog alertDialog = builder.create(); alertDialog.show(); Window window = alertDialog.getWindow(); window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
I’m confused why the NestedScrollView content is not showing. In fact when I set height wrap_content instead of 0dp it shows but doesn’t scroll good and has overlap with the toolbar. Can anyone figure out where am I wrong?
Answer
I tried out several things and
<androidx.core.widget.NestedScrollView android:id="@+id/edit_scrollView" app:layout_constraintTop_toBottomOf="@id/edit_point_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_constrainedHeight="true" app:layout_constraintBottom_toBottomOf="parent">
I think this will give you desired design but honestly I dont quite understand why it works and 0dp doesnt. weirdest thing for me is that 0dp works when the view is inflated in normal layout but it doesnt when its being inflating in AlertDialog.