即使在设置android:layout_width =“match_parent”时,Horizo​​ntalScrollView的子节点也不匹配它的父视图的宽度

时间:2017-12-28 15:29:05

标签: android android-layout horizontalscrollview

我想在手机屏幕顶部显示一个包含30个项目的水平滚动列表,为此我使用的是带有“水平”方向的LinearLayout的Horizo​​ntalScrollView,因为它是孩子,但线性布局没有占用整个手机的宽度,即使将其宽度设置为“匹配 - 父级”。这是代码:

<HorizontalScrollView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal"
        android:layout_gravity="center">
        <GridView
            android:id="@+id/gridView_horizontal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:stretchMode="columnWidth" />
    </LinearLayout>
</HorizontalScrollView>

enter image description here

图中显示线性布局不占用整个空间,而LinearLayout仅覆盖部分空间。此外,在将大小更改为固定大小时,我注意到Horizo​​ntalScrollView实际上仅表现为垂直滚动视图。

注意:如果有另一种方法可以显示一个水平的按钮列表,其中30个项目的数字从1到30,请建议。

2 个答案:

答案 0 :(得分:1)

要轻松实现这一点,您可以将Recyclerview与Horizo​​tanl布局管理器一起使用。例如

recycler_view.setLayoutManager(new LinearLayoutManager(MainActivity.this, LinearLayoutManager.HORIZONTAL, false));

答案 1 :(得分:0)

我认为您不需要HorizontalScrollView嵌套LinearLayout来实现您的目标。如果您的按钮布局相似且按钮功能也相似,那么简单地使用水平RecyclerView会更好。请参阅此答案以获取帮助https://stackoverflow.com/a/40584425/9119277