【问题标题】: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_width="0dp"
    android:layout_height="295dp"
    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_width="20dp"  <!-- the problem -->
        android:layout_height="35dp"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:background="@drawable/square" />

</HorizontalScrollView>

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

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

任何帮助将不胜感激。

【问题讨论】:

    标签: java android xml android-studio


    【解决方案1】:

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

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

    引用自documentation

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

    【讨论】:

      猜你喜欢
      • 2015-05-04
      • 1970-01-01
      • 2016-08-19
      • 2018-01-02
      • 1970-01-01
      • 2014-08-09
      • 2017-01-12
      • 2012-06-13
      • 1970-01-01
      相关资源
      最近更新 更多