保证金不使用FrameLayout和权重

时间:2014-01-29 12:27:44

标签: android xml android-layout

我有这个xml布局,它是FrameLayouts的父布局:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:weightSum="2"
    android:padding="10dp"
    android:clipToPadding="false"
    android:clipChildren="false">

    <LinearLayout
        android:id="@+id/home_card_row1"
        android:layout_height="0dp"
        android:layout_width="fill_parent"
        android:layout_weight="1"
        android:clipChildren="false"
        android:orientation="horizontal" />

    <LinearLayout
        android:id="@+id/home_card_row2"
        android:layout_height="0dp"
        android:layout_width="fill_parent"
        android:layout_weight="1"
        android:paddingTop="10dp"
        android:clipChildren="false"
        android:clipToPadding="false"
        android:orientation="horizontal" />

</LinearLayout>

这是我单独的单个FrameLayout,它填充在上面显示的父布局中:

<?xml version="1.0" encoding="utf-8"?>

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_gravity="top"
    android:layout_height="fill_parent"
    android:layout_width="wrap_content"
    android:layout_weight="0.5"
    android:background="@drawable/book_corners"
    android:paddingRight="6dp"
    android:paddingBottom="6dp"
    android:layout_marginLeft="20dp"
    android:layout_marginBottom="5dp"
    android:layout_marginRight="20dp"
    android:clipToPadding="false"
    android:clipChildren="false">

    <ImageView
        android:layout_gravity="top"
        android:id="@+id/home_item_bg"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@drawable/book2"
        android:layout_marginLeft="-12px"
        android:layout_marginTop="-12px"
        android:cropToPadding="false"/>

    <RelativeLayout
        style="@style/single_book"
        android:layout_gravity="top"
        >

        <TextView
            android:id="@+id/home_item_badge"
            style="@style/round_badge"
            android:text="34"
            />

        <TextView
            android:id="@+id/home_item_big_badge"
            style="@style/big_badge"
            android:text="Updated 30 minutes ago"
            />

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_alignParentBottom="true"
            >

            <TextView
                android:id="@+id/home_item_title"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="This is the very cool title"
                android:textSize="20sp"
                android:textStyle="bold"
                android:textColor="#FFFFFF"
                android:layout_marginBottom="10dp"
                />

            <TextView
                android:id="@+id/home_item_subtitle"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="And this is some very nice description about content"
                android:textColor="#FFFFFF"
                android:textSize="15sp" />
        </LinearLayout>

        <RelativeLayout
            android:id="@+id/home_item_preloader"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_marginTop="-12px"
            android:layout_marginLeft="-12px"
            android:background="#333"
            >

            <ProgressBar
                android:layout_width="40dp"
                android:layout_height="40dp"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true"
                android:layout_centerInParent="true"/>

        </RelativeLayout>

    </RelativeLayout>
</FrameLayout>

当我用它的FrameLayout子项向父xml充气时,一切都很好,但当我尝试以编程方式从单独的xml中添加FrameLayouts时,左/右边距消失。 为什么会这样?

1 个答案:

答案 0 :(得分:0)

除了使用用于字体大小的sp(缩放像素)外,您还需要使用dp(密度像素),用于FrameLayout中的维度,如下所示:< / p>

使用sp代替dp的所有边距和边距相同。

   <FrameLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal"
        android:layout_gravity="top"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent"
        android:layout_weight="0.5"
        android:background="#fff"
        android:paddingRight="6dp"
        android:paddingBottom="6dp"
        android:layout_marginLeft="5dp"
        android:layout_marginBottom="5dp"
        android:layout_marginRight="5dp"
        android:clipToPadding="false"
        android:clipChildren="false">