Android 强制HorizontalScrollView占据全部宽度和中心子对象

Android 强制HorizontalScrollView占据全部宽度和中心子对象,android,android-layout,Android,Android Layout,我想要一个水平滚动视图占据整个屏幕的宽度,并使其子视图居中。到目前为止,我只是用它来包装孩子,所有的东西都是左对齐的。我的观点是这样的: <HorizontalScrollView android:id="@+id/mainMenu" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal

我想要一个水平滚动视图占据整个屏幕的宽度,并使其子视图居中。到目前为止,我只是用它来包装孩子,所有的东西都是左对齐的。我的观点是这样的:

<HorizontalScrollView
    android:id="@+id/mainMenu"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:background="#CD000000"
    android:fillViewport="true"
    android:gravity="center_horizontal"
    android:scrollbars="none" >

</HorizontalScrollView>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="horizontal">

<LinearLayout
      android:id="@+id/mode_panzoom"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:orientation="vertical"
      android:paddingBottom="5dip"
      android:paddingLeft="5dip"
      android:paddingRight="5dip"
      android:minWidth="75dip"
      android:gravity="center_horizontal">

    <ImageView
            android:src="@drawable/ic_pan"
            android:layout_width="25dip"
            android:layout_height="wrap_content"
            android:text="@string/mode_panzoom"
            android:scaleType="centerInside"/>

</LinearLayout>

<LinearLayout
        android:id="@+id/mode_annotate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:paddingBottom="5dip"
        android:paddingLeft="5dip"
        android:paddingRight="5dip"
        android:minWidth="75dip"
        android:gravity="center_horizontal">
    <ImageView
            android:src="@drawable/ic_annotate"
            android:layout_width="25dip"
            android:layout_height="wrap_content"
            android:text="@string/mode_panzoom"/>

</LinearLayout>

<LinearLayout
        android:id="@+id/mode_measure"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:paddingBottom="5dip"
        android:paddingLeft="5dip"
        android:paddingRight="5dip"
        android:minWidth="75dip"
        android:gravity="center_horizontal">
    <ImageView
            android:src="@drawable/ic_measure"
            android:layout_width="25dip"
            android:layout_height="wrap_content"
            android:text="@string/mode_panzoom"
            android:gravity="center"/>

</LinearLayout>

在里面,我们膨胀的东西看起来像这样:

<HorizontalScrollView
    android:id="@+id/mainMenu"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:background="#CD000000"
    android:fillViewport="true"
    android:gravity="center_horizontal"
    android:scrollbars="none" >

</HorizontalScrollView>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="horizontal">

<LinearLayout
      android:id="@+id/mode_panzoom"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:orientation="vertical"
      android:paddingBottom="5dip"
      android:paddingLeft="5dip"
      android:paddingRight="5dip"
      android:minWidth="75dip"
      android:gravity="center_horizontal">

    <ImageView
            android:src="@drawable/ic_pan"
            android:layout_width="25dip"
            android:layout_height="wrap_content"
            android:text="@string/mode_panzoom"
            android:scaleType="centerInside"/>

</LinearLayout>

<LinearLayout
        android:id="@+id/mode_annotate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:paddingBottom="5dip"
        android:paddingLeft="5dip"
        android:paddingRight="5dip"
        android:minWidth="75dip"
        android:gravity="center_horizontal">
    <ImageView
            android:src="@drawable/ic_annotate"
            android:layout_width="25dip"
            android:layout_height="wrap_content"
            android:text="@string/mode_panzoom"/>

</LinearLayout>

<LinearLayout
        android:id="@+id/mode_measure"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:paddingBottom="5dip"
        android:paddingLeft="5dip"
        android:paddingRight="5dip"
        android:minWidth="75dip"
        android:gravity="center_horizontal">
    <ImageView
            android:src="@drawable/ic_measure"
            android:layout_width="25dip"
            android:layout_height="wrap_content"
            android:text="@string/mode_panzoom"
            android:gravity="center"/>

</LinearLayout>


fillviewport似乎什么都不做,应用重力似乎没有任何效果,可能是因为它的包装内容,即使我将fill\u parent设置为宽度。

我解决了问题,结果它与xml无关。事实上,我是在夸大水平滚动视图的内容。之后,如果您想让您的父项正确填充父项,则需要通过request\u layout再次强制其布局。否则它将无法获得正确的大小。

您能给我们一个屏幕截图,看看它在hierachyviewer中的外观吗?