RecyclerView重力

时间:2015-02-11 09:23:43

标签: android android-recyclerview

我有一个recylcler视图,但似乎没有实现setGravity方法。

我的列表是水平对齐的,但我需要它居中。我该怎么做?

fragment_my_zone_item_controlled.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/dark_grey">

    <FrameLayout
        android:id="@+id/fragment_my_zone_item_controlled_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/fragment_my_zone_item_controlled_tabs"
        android:layout_marginBottom="12dp"
        android:layout_marginTop="12dp" />

    <android.support.v7.widget.RecyclerView
        android:id="@+id/fragment_my_zone_item_controlled_tabs"
        android:layout_width="match_parent"
        android:layout_height="44dp"
        android:background="@color/action_bar_color"
        android:scrollbars="none" />

</RelativeLayout>

This is how it looks

这就是它的外观,我需要它集中在中心

谢谢你们

4 个答案:

答案 0 :(得分:6)

我知道这是非常晚的答案,可能是其他人得到了这方面的帮助所以请尝试添加这样的

 <android.support.v7.widget.RecyclerView
        android:id="@+id/fragment_my_zone_item_controlled_tabs"
        android:layout_width="wrap_content"
        android:layout_height="44dp"
        android:layout_centerHorizontal="true"
        android:background="#dddddd"
        android:scrollbars="none" />

添加android:layout_centerHorizontal="true"方法

答案 1 :(得分:1)

如果其他答案对您没有帮助,我在RecyclerView遇到了一个问题,即内容未被有效包裹,导致布局被强制转移到一个角落或另一个角落。

我的答案是创建一个扩展LinearLayoutManager的自定义类。您可以尝试这个,然后以编程方式设置重力。

以下是我question的链接,以及我获得idea for my answer的帖子。

答案 2 :(得分:1)

(如果有人正在寻找像我一样的答案),我尝试了两种解决方案并且不适合我,这就是我所做的。我计算了屏幕宽度&amp;我的视图宽度,然后在我的RecyclerView.ViewHolder我向左边添加了边距供我查看(这是我的情况下的比例)

DisplayMetrics metrics = new DisplayMetrics();
context.getWindowManager().getDefaultDisplay().getMetrics(metrics);
int screenWidth = metrics.widthPixels;
long ratio = screenWidth * 90 / 100;
int margin = (int) ((screenWidth - ratio) / 2);
LinearLayout.LayoutParams lp1 = new LinearLayout.LayoutParams((int) ratio, ViewGroup.LayoutParams.WRAP_CONTENT);
lp1.gravity = Gravity.CENTER_VERTICAL;
lp1.setMargins(margin, 0, 0, 0);
itemLayoutView.setLayoutParams(lp1);

这是一个混乱的解决方案,但我找不到另一个

答案 3 :(得分:0)

theLazyFinder解决方案可以工作但是如果你想为RV提供不同的背景颜色,那么将它添加到FrameLayout并将其重力设置为居中。

<FrameLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorWhite">

        <android.support.v7.widget.RecyclerView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            />

</FrameLayout>