我需要一些帮助。我不知道我的代码有什么问题。所以我有这样的XML文件
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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="match_parent"
android:background="@drawable/background_bottom_sheet_radius_16"
tools:context=".FilterActiveIpdDialog">
<ImageView
android:id="@+id/ic_filter_close_active_ipd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginVertical="@dimen/medium_fit"
android:layout_marginStart="@dimen/medium"
android:src="@drawable/ic_close_grey"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription,ImageContrastCheck" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tv_filter_header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/large"
android:text="@string/filter"
android:textAppearance="@style/TextAppearance.MaterialComponents.Headline5"
android:textColor="@color/colorBlackGrade"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/ic_filter_close_active_ipd"
app:layout_constraintStart_toEndOf="@id/ic_filter_close_active_ipd"
app:layout_constraintTop_toTopOf="@id/ic_filter_close_active_ipd" />
<androidx.core.widget.NestedScrollView
android:id="@+id/layout_rv_filter_active_ipd"
android:layout_width="wrap_content"
android:layout_height="@dimen/match_constraint"
android:layout_marginTop="@dimen/medium"
android:layout_marginBottom="@dimen/medium"
app:layout_constraintBottom_toTopOf="@id/btn_filter_dialog_active_ipd"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/ic_filter_close_active_ipd">
<LinearLayout
android:id="@+id/layout_bottom_sheet_active_ipd"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_hospital"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/medium_fit"
android:layout_marginEnd="@dimen/small"
tools:listitem="@layout/item_hospital_filter_active_ipd" />
<View
android:id="@+id/div_filter"
android:layout_width="match_parent"
android:layout_height="@dimen/micro"
android:layout_marginTop="@dimen/medium"
android:background="@color/colorBlackGrade" />
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/layout_all_ward_active_ipd"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/medium_fit"
android:layout_marginTop="@dimen/small"
android:layout_marginEnd="@dimen/small"
android:paddingVertical="@dimen/small">
<com.google.android.material.textview.MaterialTextView
android:id="@+id/tv_filter__all_ward"
style="@style/TextAppearance.AppCompat.Title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start|center_vertical"
android:text="@string/all_wards"
android:textColor="@color/colorBlackGrade"
android:textSize="@dimen/text_medium" />
<com.google.android.material.checkbox.MaterialCheckBox
android:id="@+id/cb_all_ward"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:buttonTint="@color/colorPrimaryMid"
android:text=""
tools:ignore="HardcodedText" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_ward"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/medium_fit"
android:layout_marginEnd="@dimen/small"
tools:listitem="@layout/item_ward_filter_active_ipd" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
<com.google.android.material.button.MaterialButton
android:id="@+id/btn_filter_dialog_active_ipd"
style="@style/Widget.CoreTheme.ButtonRadius"
android:layout_width="@dimen/empty"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/large"
android:layout_marginBottom="@dimen/medium"
android:paddingTop="@dimen/medium"
android:paddingBottom="@dimen/medium"
android:text="@string/filter"
android:textColor="@color/colorWhite"
android:textSize="@dimen/text_small"
app:backgroundTint="@color/colorSecondaryBase"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:ignore="DuplicateSpeakableTextCheck,TextContrastCheck" />
</androidx.constraintlayout.widget.ConstraintLayout>
我认为问题出在NestedScrollView中。
<androidx.core.widget.NestedScrollView
android:id="@+id/layout_rv_filter_active_ipd"
android:layout_width="wrap_content"
android:layout_height="@dimen/match_constraint"
android:layout_marginTop="@dimen/medium"
android:layout_marginBottom="@dimen/medium"
app:layout_constraintBottom_toTopOf="@id/btn_filter_dialog_active_ipd"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/ic_filter_close_active_ipd">
我不知道怎么了。Android Studio中的设计完美地显示了
但是当我运行应用程序的时候,就像这样。
如果我将NestedScrollView的高度更改为500dp,那么在使用6英寸屏幕的手机时,UI是很好的,但在不同的手机屏幕上,布局会变得混乱。
2条答案
按热度按时间t3irkdon1#
由于这是一个BottomSheet,我相信发生的事情是
NestedScrollView
的高度在开始时是0,当数据到达时,RecyclerView
得到填充,但高度仍然是0。解决此问题的一种方法是在
NestedScrollView
中使用fillViewport = true
。如果这不起作用,您可以使用ViewTreeObserver,因此在片段/Activity中,当数据到达时(我假设您调用的是REST API),您可以将
RecyclerView
填充到ViewTreeObserver
中,如下所示:pwuypxnk2#
我通过将状态bottomsheet行为设置为STATE_EXPANDED来修复这个问题。
参考:https://stackoverflow.com/a/62958074/14863421