如何让NestedScrollView内的EditText占满父容器剩余高度
让NestedScrollView内的RichEditText占据剩余空间的实现方案
要实现RichEditText占据NestedScrollView的剩余空间,需要调整布局容器的属性,具体修改如下:
核心修改点
- 将NestedScrollView的直接子LinearLayout的高度从
wrap_content改为match_parent,让容器能填充NestedScrollView的整个可用空间 - 给该LinearLayout添加权重分配规则,让RichEditText自动占据剩余空间:
- 保持上方
ll_contain_rv的高度为wrap_content(自适应内容高度) - 给RichEditText设置
android:layout_height="0dp"和android:layout_weight="1",使其填充容器剩余空间
- 保持上方
修改后的完整布局代码
<androidx.core.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="0dp" app:layout_constraintTop_toBottomOf="@id/et_title" app:layout_constraintBottom_toBottomOf="parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:weightSum="1"> <LinearLayout android:id="@+id/ll_contain_rv" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:visibility="gone"> <androidx.recyclerview.widget.RecyclerView android:id="@+id/rv_checklist" android:layout_width="match_parent" android:layout_height="wrap_content" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" android:orientation="vertical" android:visibility="visible"/> <LinearLayout android:id="@+id/ll_add_checklist" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:background="?attr/selectableItemBackground" android:paddingEnd="@dimen/_80sdp" android:alpha="0.7"> <androidx.appcompat.widget.AppCompatImageView android:id="@+id/iv_add" android:layout_width="@dimen/_30sdp" android:layout_height="@dimen/_30sdp" android:padding="@dimen/_5sdp" android:scaleType="fitCenter" app:tint="@color/black" android:src="@drawable/ic_add"/> <androidx.appcompat.widget.AppCompatTextView android:id="@+id/tv_add" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_marginStart="@dimen/_5sdp" style="@style/AppTheme.TextView.Content_Note" android:gravity="center_vertical" android:text="@string/text_add_item"/> </LinearLayout> </LinearLayout> <com.sophimp.are.RichEditText android:id="@+id/et_content" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:background="@android:color/transparent" android:layout_marginTop="@dimen/_5sdp" android:hint="@string/text_notes_here" android:inputType="textMultiLine|textNoSuggestions" style="@style/AppTheme.TextView.Content_Note" android:gravity="top" android:lineSpacingExtra="4dp" android:visibility="visible"/> </LinearLayout> </androidx.core.widget.NestedScrollView>
补充说明
- 当
ll_contain_rv显示时,它会占用自身内容高度,RichEditText自动填充剩下的空间;当ll_contain_rv隐藏时,RichEditText会填充整个NestedScrollView的可用区域 - 保持RichEditText的
android:gravity="top",确保输入文本从控件顶部开始显示,避免内容居中导致的视觉问题
内容的提问来源于stack exchange,提问作者DucK
相关产品推荐
相关产品推荐

