自定义Horizo​​ntalScrollView中的按钮

时间:2012-02-19 14:29:10

标签: java android xml layout calculator

我想为计算器设计一个简单的界面。计算器有2组按键,基本按键和附加按键。我想把额外的密钥放在HorizontalScrollView上。这是xml文件:

<HorizontalScrollView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="A" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="B" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="C" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="D" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="E" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="F" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="G" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="H" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="I" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="J" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="K" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="L" />

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="M" />
        </LinearLayout>
    </HorizontalScrollView>

以下是它的样子:

enter image description here

然而,它工作得很好,我可以水平滚动并点击我想要的任何按钮。但我想更多地定制它。所以这是我的问题:

  • 如何编辑每个按钮的宽度,以便一次只能在屏幕上显示5个按钮。
  • 如何通过5个按钮进行滚动偏移,即如果我在屏幕上显示最左边的5个按钮并向右滚动,则这5个按钮将向左移动,接下来的5个按钮将显示
  • 如何消除滚动条(即用不可见的滚动条滚动)。

谢谢:)

1 个答案:

答案 0 :(得分:2)

如果您将android:weightsum="5"添加到线性布局,然后将android:layout_weight="1"添加到我认为的每个按钮中,则会一次将5个按钮添加到屏幕上。然而,我不是很擅长使用weight属性,无论何时我使用它我都会进行一些猜测和检查,但是我的直觉告诉我,有可能以某种方式实现你的体重和体重。

然而,我不知道无论你使用什么屏幕,总是显示5个按钮是否有意义?对我来说,似乎你可能想要改变它至少一些,以便最小的屏幕可能只有4个按钮,最宽的屏幕可能会得到6,否则你将得到各种各样的按钮大小跨越所有不同的设备密度。

将其添加到Horizo​​ntalScrollView:

android:scrollbars="false"

应该为你处理滚动条。

至于关于一次滚动5的部分,我害怕实现这个你可能不得不用horizontalScrollView.smoothScrollBy()方法手动处理它,你必须让它做计算来弄清楚到底有多远它需要去通过5个按钮。然后覆盖你的onTouch监听器,为你拨打smoothScrollBy()电话。

smoothScrollBy() - 值得看看smoothScrollTo()。