我希望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>
我正在使用代码来调整recyclerview的大小:
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.而且我给价格栏的高度只有50dp。
此外,我正在使用此动画来显示价格栏:
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200"
android:fromYDelta="180%"
android:toYDelta="0%">
</translate>
答案 0 :(得分:2)
使用垂直方向的线性布局而不是相对布局,并提供回收者视图
android:layout_weight="1"
答案 1 :(得分:1)
如果您使用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
逻辑。
定义最大重量总和。如果未指定,则总和通过计算 添加所有子项的layout_weight。这可以用于 实例给予单个孩子50%的总可用空间 给它一个layout_weight为0.5并将weightSum设置为1.0。
答案 2 :(得分:1)
<?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>
答案 3 :(得分:0)
尝试使用android:layout_below:“@ + id / recycler_view”将页面价格栏的id:layoutPricebar放在recycleler_view下面:
<RelativeLayout
android:id="@+id/layoutPricebar"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#454560"
android:layout_below="@+id/recycler_view"
android:layout_alignParentBottom="true"
android:visibility="gone">
答案 4 :(得分:0)
如果你的价格栏高度为50dp,请使用RecyclerView android:layout_marginBottom =“50dp”这将解决您的问题,无需使用java代码来调整Recyclerview的大小