我想让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>
<?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>
如果您使用的是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%。
使用垂直方向的线性布局而不是相对布局,并给出回收器视图
android:layout_weight="1"
为主机、硬盘、镜像资源提供回收站功能。避免资源误删除导致数据丢失。 为了避免因为删除误操作而导致的数据丢失风险,云管平台提供了回收站功能。回收站用于临时存放用户删除的主机(包括虚拟机和裸金属)、硬盘、镜像文件。回收站功能仅支持管理员用户使用,普通用户不可见。 虚拟机 主机回收站用于存放用户删除的虚拟机和裸金属文件。 硬盘 硬盘回收站用于存放用户删除的硬盘文件。 镜像 镜像回收站用于存放用户删除的镜
已删除的文件/文件夹/团队空间将统一进入到回收站,可以从回收站对文件进行恢复或者彻底删除。
回收站包含已删除的表和任何关联的对象如索引、约束、嵌套表。在主窗口中,点击 “其他”->“回收站”来打开回收站的对象列表。 还原一个表 在对象选项卡选择一个表。 点击 “闪回表”。 移除一个对象 在对象选项卡选择一个要清除的对象。 点击 “清除对象”。 在对话窗口中确认删除。 移除全部对象 右击对象选项卡的任意位置并在弹出式菜单中选择“清除回收站”。 在对话窗口中确认删除。 移除每个用户的全部对象
回收站包含已删除的表和任何关联的对象如索引、约束、嵌套表。在主窗口中,点击 “其他”-> “回收站”来打开回收站的对象列表。 还原一个表 在对象选项卡选择一个表。 点击 。 移除一个对象 在对象选项卡选择一个要清除的对象。 点击 。 在对话窗口中确认删除。 移除全部对象 按住 Control 键并点按对象选项卡的任意位置,然后在弹出式菜单中选择“清除回收站”。 在对话窗口中确认删除。 移除每个用户
回收站包含已删除的表和任何关联的对象如索引、约束、嵌套表。在主窗口中,点击 “其他”->“回收站”来打开回收站的对象列表。 还原一个表 在对象选项卡选择一个表。 点击 “闪回表”。 移除一个对象 在对象选项卡选择一个要清除的对象。 点击 “清除对象”。 在对话窗口中确认删除。 移除全部对象 右击对象选项卡的任意位置并在弹出式菜单中选择“清除回收站”。 在对话窗口中确认删除。 移除每个用户的全部对象
我有一个关于Android的RecyclerView的问题。状态 我正在使用RecyclerView,如何使用它并将其与RecyclerView绑定。状态 我的目的是保存RecyclerView的滚动位置。