当前位置: 首页 > 知识库问答 >
问题:

如何调整回收站的高度?

尚声
2023-03-14

我想让recyclerview调整它的高度,这样物品就不会隐藏在价格栏后面(见图)

这是我的xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layoutMainContainer"
    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"
    tools:context="com.mridulahuja.groceryapp.activities.MainActivity">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="vertical"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_marginTop="8dp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        android:background="@null" />

    <RelativeLayout
        android:id="@+id/layoutPricebar"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="#454560"
        android:layout_alignParentBottom="true"
        android:visibility="gone">

        ...
        ...

    </RelativeLayout>

</RelativeLayout>

我用来调整回收视图大小的代码:

ViewTreeObserver pricebarvto = layoutPricebar.getViewTreeObserver();
pricebarvto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
            layoutPricebar.getViewTreeObserver().removeGlobalOnLayoutListener(this);
        } else {
            layoutPricebar.getViewTreeObserver().removeOnGlobalLayoutListener(this);
        }
        pricebarHeight = layoutPricebar.getMeasuredHeight();
    }
});


RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) recyclerView.getLayoutParams();
params.height = relativeLayoutContainerHeight - pricebarHeight;
recyclerView.setLayoutParams(params);

其中relativeLayoutContainerHeight是根RelativeLayout的高度

但高度没有改变。当我将一个大值硬编码为pricebarHeight时,它会发生变化,比如160。我给pricebar的高度只有50 DP。

我还用这个动画来显示价格栏:

<translate
xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="200"
    android:fromYDelta="180%"
    android:toYDelta="0%">
</translate>

共有3个答案

赵晟睿
2023-03-14
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layoutMainContainer"
    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"
    tools:context="com.mridulahuja.groceryapp.activities.MainActivity">

    <RelativeLayout
        android:id="@+id/layoutPricebar"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="#454560"
        android:layout_alignParentBottom="true"
        android:visibility="gone">

        ...
        ...

    </RelativeLayout>

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="vertical"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_marginTop="8dp"
        android:layout_above = "@id/layoutPricebar"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        android:background="@null" />



</RelativeLayout>
公羊雅达
2023-03-14

如果您使用的是RelativeLayout,那么您应该使用android:layout_marginBottom

指定此视图底部的额外空间。这个空间在这个视图的边界之外。保证金值应为正值。

XML

<android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="vertical"
        ................
        android:layout_marginBottom="50dp" />

如果您想要LinearLayout,请遵循android:weightSum逻辑。

定义最大权重和。如果未指定,则通过添加所有子项的布局权重来计算总和。例如,通过将布局权重设置为0.5,并将权重总和设置为1.0,这可以用于为单个孩子提供总可用空间的50%。

郑正文
2023-03-14

使用垂直方向的线性布局而不是相对布局,并给出回收器视图

android:layout_weight="1"
 类似资料:
  • 为主机、硬盘、镜像资源提供回收站功能。避免资源误删除导致数据丢失。 为了避免因为删除误操作而导致的数据丢失风险,云管平台提供了回收站功能。回收站用于临时存放用户删除的主机(包括虚拟机和裸金属)、硬盘、镜像文件。回收站功能仅支持管理员用户使用,普通用户不可见。 虚拟机 主机回收站用于存放用户删除的虚拟机和裸金属文件。 硬盘 硬盘回收站用于存放用户删除的硬盘文件。 镜像 镜像回收站用于存放用户删除的镜

  •       已删除的文件/文件夹/团队空间将统一进入到回收站,可以从回收站对文件进行恢复或者彻底删除。

  • 回收站包含已删除的表和任何关联的对象如索引、约束、嵌套表。在主窗口中,点击 “其他”->“回收站”来打开回收站的对象列表。 还原一个表 在对象选项卡选择一个表。 点击 “闪回表”。 移除一个对象 在对象选项卡选择一个要清除的对象。 点击 “清除对象”。 在对话窗口中确认删除。 移除全部对象 右击对象选项卡的任意位置并在弹出式菜单中选择“清除回收站”。 在对话窗口中确认删除。 移除每个用户的全部对象

  • 回收站包含已删除的表和任何关联的对象如索引、约束、嵌套表。在主窗口中,点击 “其他”-> “回收站”来打开回收站的对象列表。 还原一个表 在对象选项卡选择一个表。 点击 。 移除一个对象 在对象选项卡选择一个要清除的对象。 点击 。 在对话窗口中确认删除。 移除全部对象 按住 Control 键并点按对象选项卡的任意位置,然后在弹出式菜单中选择“清除回收站”。 在对话窗口中确认删除。 移除每个用户

  • 回收站包含已删除的表和任何关联的对象如索引、约束、嵌套表。在主窗口中,点击 “其他”->“回收站”来打开回收站的对象列表。 还原一个表 在对象选项卡选择一个表。 点击 “闪回表”。 移除一个对象 在对象选项卡选择一个要清除的对象。 点击 “清除对象”。 在对话窗口中确认删除。 移除全部对象 右击对象选项卡的任意位置并在弹出式菜单中选择“清除回收站”。 在对话窗口中确认删除。 移除每个用户的全部对象

  • 我有一个关于Android的RecyclerView的问题。状态 我正在使用RecyclerView,如何使用它并将其与RecyclerView绑定。状态 我的目的是保存RecyclerView的滚动位置。