如何更改水平滚动视图中图像按钮的宽度?

Posted

技术标签:

【中文标题】如何更改水平滚动视图中图像按钮的宽度?【英文标题】:How can I change the width of an image button in a horizontal scroll view? 【发布时间】:2021-12-24 05:36:47 【问题描述】:

我正在尝试创建一个看起来像 GitHub 的贡献页面的页面(就像每个方块代表一天,方块的透明度代表提交次数)。我希望页面看起来像这样:

所以我做了一个水平滚动视图,因为我希望正方形的部分可以水平滚动。我试图将正方形添加到 HSV 中。代码如下:

<HorizontalScrollView
    android:id="@+id/scrollView"
    android:layout_
    android:layout_
    android:layout_marginTop="10dp"
    android:layout_marginRight="60dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/time">

    <ImageButton
        android:id="@+id/imageButton1"
        android:layout_  <!-- the problem -->
        android:layout_
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:background="@drawable/square" />

</HorizontalScrollView>

问题是,我无法设置图片按钮的layout_width,无论我改成什么,设计总是这样:

如你所见,高度是正确的,但宽度固定在一个奇怪的地方。无论如何我可以改变它吗?

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

您应该使用 Horizo​​ntalScrollView 内部的布局,而不是直接添加图像按钮。例如 LinearLayout 或 GridLayout

重点是scroll view只能有一个child,因为scroll view扩展了FrameLayout

引用自documentation:

用户可以滚动的视图层次结构的布局容器,允许它大于物理显示。 Horizo​​ntalScrollView 是 FrameLayout,这意味着您应该在其中放置一个包含要滚动的全部内容的子项;这个孩子本身可能是一个具有复杂对象层次结构的布局管理器。经常使用的子元素是水平方向的 LinearLayout,呈现用户可以滚动浏览的***项目的水平数组。

【讨论】:

以上是关于如何更改水平滚动视图中图像按钮的宽度?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用不同大小和方向的图像创建水平滚动视图?

如何在按钮按下时在集合视图中滚动(水平)?

如何更改 UIScrollView 中的滚动方向?

如何在 Android 的滚动视图中放大/更改子图像视图尺寸以使图像全尺寸

使用 setContentOffSet 按钮滚动

如何在滚动视图中进行多个表格视图