Android - 在Horizo​​ntalScrollView中居中按钮

时间:2016-04-05 13:29:21

标签: android android-linearlayout horizontalscrollview

我正在尝试使用HorizontalScrollView创建一种图库。 我希望有一个垂直居中的按钮,但即使我在我的按钮中指定gravitycenter_vertical,也无法使其工作,因为它始终贴在顶部。 这是我的布局:

        <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:animateLayoutChanges="true">

        <LinearLayout
            android:id="@+id/container_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <HorizontalScrollView
                android:id="@+id/horizontal_scroll_view"
                android:layout_width="match_parent"
                android:layout_height="@dimen/cameraPlaceholderHeight">

                <LinearLayout
                    android:id="@+id/horizontal_scroll_view_container"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@color/greyBackgroundColor"
                    android:gravity="start|center_vertical"
                    android:orientation="horizontal">

                    <Button
                        android:id="@+id/camera_button"
                        android:layout_width="@dimen/take_picture_size"
                        android:layout_height="@dimen/take_picture_size"
                        android:layout_gravity="center_vertical"
                        android:background="@drawable/take_picture_rounded_button"
                        android:gravity="center_vertical"
                        android:src="@drawable/syi_camera_active"/>
                </LinearLayout>
            </HorizontalScrollView>

提前致谢!

4 个答案:

答案 0 :(得分:0)

在Horizo​​ntalScrollView内的LinearLayout上,使用

android:layout_gravity="center_vertical"

而不是

android:gravity="center_vertical"

答案 1 :(得分:0)

模拟屏幕真的有助于找出你想要的东西。无论如何,从您的布局我可以理解,您需要在HorizontalScrollView的中心放置一个相机按钮。

在这种情况下,您可能会考虑使用RelativeLayout包装水平滚动视图,如下例所示

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <HorizontalScrollView
        android:id="@+id/horizontal_scroll_view"
        android:layout_width="match_parent"
        android:layout_height="@dimen/activity_horizontal_margin">

        <!-- Other items here --> 
    </HorizontalScrollView>

    <Button
        android:id="@+id/camera_button"
        android:layout_width="@dimen/activity_horizontal_margin"
        android:layout_height="@dimen/activity_horizontal_margin"
        android:layout_centerInParent="true"
        android:background="@drawable/com_facebook_button_blue"
        android:gravity="center_vertical"
        android:src="@drawable/com_facebook_button_blue" />
</RelativeLayout>

答案 2 :(得分:0)

请在您的两个滚动视图中添加android:fillViewport="true"

答案 3 :(得分:0)

在Horizo​​ntalScrollView中设置LinearLayout,如下所示:

<HorizontalScrollView
    android:id="@+id/horizontal_scroll_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:id="@+id/horizontal_scroll_view_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="start|center_vertical"
        android:orientation="horizontal">

        <Button
            android:text="Button"
            android:id="@+id/camera_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"/>
    </LinearLayout>
</HorizontalScrollView>

结果:

Button Centered Vertically

BTW:你可以摆脱按钮中的android:layout_gravity =“center_vertical”属性。