为什么framelayout的引力在这里不起作用?

时间:2016-04-04 13:58:48

标签: android xml

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:layout_weight="1">

            <ImageView
                android:background="#FF0000"
                android:id="@+id/dog"
                android:layout_width="200dp"
                android:layout_height="150dp"
                android:scaleType="fitXY"
                android:src="@drawable/dog"></ImageView>

            <ImageView
                android:id="@+id/cat"
                android:layout_width="200dp"
                android:layout_height="150dp"
                android:scaleType="fitXY"
                android:src="@drawable/cat"></ImageView>

            <ImageView
                android:id="@+id/rabbit"
                android:layout_width="200dp"
                android:layout_height="150dp"
                android:scaleType="fitXY"
                android:src="@drawable/rabbit"></ImageView>

            <ImageView
                android:id="@+id/horse"
                android:layout_width="200dp"
                android:layout_height="150dp"
                android:scaleType="fitXY"
                android:src="@drawable/horse"></ImageView>
        </FrameLayout>

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#00FF00"></TabWidget>
    </LinearLayout>
</TabHost>

<FrameLayout>我设置gravity="center"。因此,<ImageView>应出现在<FrameLayout>的中心。

但是,当我运行此代码时,<ImageView>位于<FrameLayout>的左侧|顶部。为什么它不起作用?

但是,当我设置<ImageView>的{​​{1}}时,它就可以了。

我知道layout_gravity="center"layout_gravity之间的区别,但在此示例中,gravity的{​​{1}}必须有效。但是,我不知道为什么这不起作用。

1 个答案:

答案 0 :(得分:1)

这只是因为你无法在FrameLayout中使用android:gravity。要在FrameLayout中对齐子项的位置,您需要在子视图中使用android:layout_gravity设置LayoutParams。这是正确的方法。

顺便说一下,只有FYI,android:gravity适用于LinearLayout。