如何根据文本长度动态增加相对布局的大小?

时间:2013-08-16 04:22:26

标签: android relativelayout

我有一个相对的观点,例如:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/linkCardView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@layout/login_gradient_bg"
        >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:layout_marginLeft="6dp"
        android:layout_marginRight="6dp"
        android:layout_marginTop="4dp"
        android:layout_marginBottom="4dp"
        android:background="@drawable/card_bg">

        <TextView
            android:id="@+id/linkTitle0001"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@+id/faviconView0001"
            android:paddingLeft="4dp"
            android:lineSpacingExtra="-2dp"
            android:fontFamily="sans-serif-condensed"
            android:maxLines="2"
            android:text="@string/link_title_001"
            android:textColor="#717171"
            android:textSize="17sp" />

        <TextView
            android:id="@+id/linkDesc0001"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/faviconView0001"
            android:paddingBottom="4dp"
            android:fontFamily="sans-serif"
            android:maxLines="1"
            android:text="@string/link_desc_001"
            android:textColor="#acacac"
            android:textSize="13sp"   />

        <ImageView
            android:id="@+id/faviconView0001"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingTop="6dp"
            android:paddingBottom="7dp"
            android:src="@drawable/favicon_example" />

        <ImageView
            android:id="@+id/labelSource0001"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/linkDesc0001"
            android:background="@drawable/card_label" />






    </RelativeLayout>

</FrameLayout>

我想增加relativeLayout的大小,使用linkTitle0001 TextView中填充的文本长度。我如何实现这一目标?

2 个答案:

答案 0 :(得分:2)

Try this:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/linkCardView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@layout/login_gradient_bg"
        >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:layout_marginLeft="6dp"
        android:layout_marginRight="6dp"
        android:layout_marginTop="4dp"
        android:layout_marginBottom="4dp"
        android:background="@drawable/card_bg">

        <ImageView
            android:id="@+id/faviconView0001"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingTop="6dp"
            android:paddingBottom="7dp"
            android:src="@drawable/favicon_example" />


        <TextView
            android:id="@+id/linkTitle0001"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@+id/faviconView0001"
            android:paddingLeft="4dp"
            android:lineSpacingExtra="-2dp"
            android:fontFamily="sans-serif-condensed"
            android:maxLines="2"
            android:text="@string/link_title_001"
            android:textColor="#717171"
            android:textSize="17sp" />

        <TextView
            android:id="@+id/linkDesc0001"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/faviconView0001"
            android:paddingBottom="4dp"
            android:fontFamily="sans-serif"
            android:maxLines="1"
            android:text="@string/link_desc_001"
            android:textColor="#acacac"
            android:textSize="13sp"   />


        <ImageView
            android:id="@+id/labelSource0001"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/linkDesc0001"
            android:background="@drawable/card_label" />

    </RelativeLayout>

</FrameLayout>

For Textview linkTitle0001, try to put below something or align baseline with someone as per your need.

答案 1 :(得分:0)

因为您没有规则来阻止它。 source0001低于desc0001,低于favIcon0001。标题是图标的权利,但这并不意味着它下面的东西不能重叠它。基本上,layout_below不会阻止它比该项更进一步。您需要强制所有其他人使用favicon来对齐align_right(因此他们根本不能转到favivon的右侧),或者需要在所有这些项目上加上规则以布局到标题的左侧。 / p>