让子视图确定android中父视图的大小

时间:2014-06-25 11:50:06

标签: android android-layout

我有一个自定义视图/布局,需要根据子项的内容进行调整。布局如下所示:

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

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="100dp"
    android:layout_height="64dp"
    android:orientation="vertical">

    <LinearLayout
        android:id="@+id/rectangle"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="@drawable/rectangle"
        android:orientation="horizontal"
        android:padding="5dp">

        <ImageView
            android:id="@+id/iconImageView"
            android:layout_width="32dp"
            android:layout_height="32dp"
            android:layout_gravity="center_vertical|left"
            android:contentDescription="Icon"
            android:src="@drawable/iconplaceholder"
            android:scaleType="fitCenter"/>

        <TextView
            android:id="@+id/labelTextView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginLeft="10dp"
            android:textColor="@color/white"
            android:gravity="center|left"
            android:textSize="16dp"
            android:text="Hello"/>
    </LinearLayout>

    <View
        android:id="@+id/triangle"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_gravity="center_horizontal"
        android:background="@drawable/triangle"
        android:rotation="180"/>
</LinearLayout>

我想做的是:

  • 列表项
  • 允许视图具有最大宽度
  • 确保文本视图的@+id/labelTextView的整个文本在视图中可见,并允许它在需要时变长,但不会超过最大宽度。
  • 如果文字非常简短,那么视图应该尽可能宽
  • 从代码中设置@+id/iconImageView的大小,并确保相应调整父视图的大小

我想我需要覆盖onMeasure我的观点,但如果这是正确的方法,请提出建议。另外,如何在给定一组约束的情况下测量TextView的大小,例如最大宽度?

1 个答案:

答案 0 :(得分:1)

我认为您可以将父级的layout_height设置为wrap_content。这样,它将视图设置为需要的大小,具体取决于其中的子项的大小。