Android线性布局 - 如何处理四行重力

时间:2015-02-10 00:15:46

标签: android-layout imageview position android-linearlayout gravity

我有一个线性布局,最初设置为以3x3格式显示9个图像。我使用android:layout_gravity =“right | top”等...来正确定位我的图像(如下面的XML所示)。

我需要添加另一行,即3个图像和4个图像。新的'奖励'行导致我一个问题,因为我无法看到如何正确定位图像。使用当前设置,它们与第三行重叠。

所以,问题是,我怎样才能正确使用线性布局来定位横跨3和4的图像网格。我认为不需要使用gridview就可以了。

我的XML布局代码如下。

任何帮助一如既往地非常感谢!

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity$PlaceholderFragmentMain">


<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/containerMainX"
    android:layout_width="match_parent" android:layout_height="match_parent"
    tools:context=".MainActivity" tools:ignore="MergeRootFrame"
    android:fitsSystemWindows="true"
    android:weightSum="5"
    android:layout_above="@+id/adViewMain">

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:layout_gravity="center"
        android:weightSum="3" >

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/imageViewTopLeft"
            android:padding="6dip"
            android:layout_gravity="left|top" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/imageViewTopCenter"
            android:padding="6dip"
            android:layout_gravity="center|top" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/imageViewTopRight"
            android:padding="6dip"
            android:layout_gravity="right|top" />

    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:weightSum="3" >

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/imageViewCenterLeft"
            android:padding="6dip"
            android:layout_gravity="left|center" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/imageViewCenterCenter"
            android:padding="6dip"
            android:layout_gravity="center|center" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/imageViewCenterRight"
            android:padding="6dip"
            android:layout_gravity="right|center" />

    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:weightSum="3" >

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/imageViewBottomLeft"
            android:padding="6dip"
            android:layout_gravity="left|bottom" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/imageViewBottomCenter"
            android:padding="6dip"
            android:layout_gravity="center|bottom" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/imageViewBottomRight"
            android:padding="6dip"
            android:layout_gravity="right|bottom" />

    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:weightSum="3" >

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/imageViewBonusLeft"
            android:padding="6dip"
            android:layout_gravity="left|bottom" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/imageViewBonusCenter"
            android:padding="6dip"
            android:layout_gravity="center|bottom" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:id="@+id/imageViewBonusRight"
            android:padding="6dip"
            android:layout_gravity="right|bottom" />

    </LinearLayout>

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:id="@+id/imageViewGameBackButton"
        android:padding="6dip"
        android:layout_gravity="left|bottom" />


</FrameLayout>


</RelativeLayout>

1 个答案:

答案 0 :(得分:0)

管理来弄明白...垂直LinearLayout(权重4)包含3个水平LinearLayouts,每个处理自己的权重,而不是imageViews的重力....

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_gravity="center"
    android:layout_weight="1"
    android:weightSum="3" >

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:id="@+id/imageViewTopLeft"
        android:padding="6dip"
        />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:id="@+id/imageViewTopCenter"
        android:padding="6dip"
        />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:id="@+id/imageViewTopRight"
        android:padding="6dip"
        />

</LinearLayout>

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_gravity="center"
    android:layout_weight="1"
    android:weightSum="3" >

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:id="@+id/imageViewCenterLeft"
        android:padding="6dip"
        />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:id="@+id/imageViewCenterCenter"
        android:padding="6dip"
         />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:id="@+id/imageViewCenterRight"
        android:padding="6dip"
        />

</LinearLayout>

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_gravity="center"
    android:layout_weight="1"
    android:weightSum="3" >

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:id="@+id/imageViewBottomLeft"
        android:padding="6dip"
        />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:id="@+id/imageViewBottomCenter"
        android:padding="6dip"
        />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:id="@+id/imageViewBottomRight"
        android:padding="6dip"
        />

</LinearLayout>

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_gravity="center"
    android:layout_weight="1"
    android:weightSum="3" >

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:id="@+id/imageViewBonusLeft"
        android:padding="6dip"
        />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:id="@+id/imageViewBonusCenter"
        android:padding="6dip"
        />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:id="@+id/imageViewBonusRight"
        android:padding="6dip"
        />

</LinearLayout>