【问题标题】:HorizontalScrollView's child not matching it's parent view's width even on setting android:layout_width="match_parent"即使在设置 android:layout_width="match_parent" 时,Horizo​​ntalScrollView 的孩子也不匹配它的父视图的宽度
【发布时间】:2017-12-28 15:29:05
【问题描述】:

我想在手机屏幕顶部显示一个可滚动按钮的水平列表,其中包含 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>

从图中可以看出,线性布局并没有占据整个空间,而 LinearLayout 只是覆盖了一部分空间。同样在将大小更改为固定大小时,我注意到 Horizo​​ntalScrollView 实际上表现得像一个垂直滚动视图。

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

【问题讨论】:

  • 您不能将 GridView 放在水平滚动视图中。您可以创建具有水平滚动方向的回收站视图。 mRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, true));

标签: android android-layout horizontalscrollview


【解决方案1】:

为了轻松实现这一点,您可以将 Recyclerview 与 Horizo​​tanl Layout Manager 结合使用。例如

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

【讨论】:

  • 我也想使用 RecyclerView,但由于我的要求很简单,固定项目的水平列表我认为使用 RecyclerView 不是一个好的选择。不过,我会考虑这一点并以这种方式工作。
  • 不使用 gridview 和水平 Scrollview 或放置静态 30 按钮不是有效的方法。您可以通过使用 recylerview 以更少的代码和高效的方式完成它
  • 好的,我会考虑用 RecyclerView 来代替。
  • @SudhanshuVohra 如果答案对你有帮助.. 你也可以接受。
  • 我会尝试,如果可行,我一定会接受。我的问题不仅是要达到最终结果,还要找出为什么它不能与 Horizo​​ntalScrollView 一起使用。如果你能帮助我,那么请这样做。
【解决方案2】:

我认为您不需要 HorizontalScrollView 和嵌套的 LinearLayout 来实现您想要实现的目标。如果您的按钮布局相似并且按钮的功能也相似,那么简单地使用水平RecyclerView 会是一个更好的主意。参考这个答案寻求帮助https://stackoverflow.com/a/40584425/9119277

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-21
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    相关资源
    最近更新 更多