简体   繁体   English

NestedScrollView 未显示在 AlertDialog 中

[英]NestedScrollView doesn't show up in AlertDialog

I have an AlertDialog that has a custom view and here is the view:我有一个具有自定义视图的AlertDialog ,这是视图:

<?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.在 xml 设计屏幕中,我可以正常看到 Toolbar 和 NestedScrollView 内容,但在我的应用程序中,NestedScrollView 没有显示,我只能看到工具栏。

Here is the AlertDialog code:这是AlertDialog代码:

 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.我很困惑为什么NestedScrollView内容没有显示。 In fact when I set height wrap_content instead of 0dp it shows but doesn't scroll good and has overlap with the toolbar.事实上,当我设置高度wrap_content而不是0dp 时,它会显示但滚动效果不佳并且与工具栏重叠。 Can anyone figure out where am I wrong?谁能弄清楚我错在哪里?

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.我认为这会给你想要的设计,但老实说我不太明白为什么它有效而 0dp 没有。 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.对我来说最奇怪的是,当视图在正常布局中膨胀时 0dp 起作用,但在 AlertDialog 中膨胀时却不起作用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM