TwoWayView(扩展AdapterView)根据第一个元素计算其高度

时间:2016-08-18 12:53:15

标签: android android-layout android-adapterview

我有一个包含图标的TwoWayView元素,图标下方的TextView(项目标题)和文本视图下方的RatingBar。

这是我的布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_margin="10dip"
    android:id="@+id/group_layout">

    <LinearLayout
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:orientation="horizontal"
        android:paddingBottom="3dip">
        <TextView
            android:id="@+id/group_title"
            android:textColor="@color/black"
            android:layout_marginBottom="5dip"
            android:layout_marginRight="5dip"
            android:textSize="15sp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="3dp">
        </TextView>
        <TextView
            android:id="@+id/link_text"
            android:textColor="@color/blue"
            android:textSize="12sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
        </TextView>
    </LinearLayout>
    <org.lucasr.twowayview.TwoWayView
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/list"
        android:orientation="horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:drawSelectorOnTop="false"
        android:layout_gravity="center_vertical"
        android:layout_marginBottom="0dip"
        tools:context=".MainActivity" />
</LinearLayout>

这是一个项目布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/group_item"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:baselineAligned="false" >
    <FrameLayout
        android:layout_height="wrap_content"
        android:layout_width="wrap_content">
        <ImageView
            android:id="@+id/item_main_icon"
            android:layout_height="100dip"
            android:layout_width="100dip"
            android:layout_gravity="center">
        </ImageView>
        <ImageView
            android:id="@+id/is_new_icon"
            android:layout_height="100dip"
            android:layout_width="100dip"
            android:src="@drawable/icon_new"
            android:layout_gravity="center">
        </ImageView>
    </FrameLayout>
    <TextView
        android:id="@+id/item_title"
        android:singleLine="false"
        android:textColor="@color/black"
        android:textSize="14sp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:maxWidth="110dp"
        android:maxLines="2"
        android:ellipsize="end">
    </TextView>
    <include layout="@layout/rating_bar"/>
</LinearLayout>

项目标题可以是一行或两行。如果第一个元素的标题有两行,那么一切都很好:

Correct

但是如果第一个元素的标题是单行,则TwoWayView的高度是基于它计算的 - 所以对于具有两行标题的其他元素,评级栏将被截断:

Wrong

因为您可以看到评级栏在第二个元素上被截断,因为TwoWayView的高度是根据第一个元素的高度计算的。

有人知道如何解决它吗?

UPD:这是我的TwoWayView的代码。没有什么特别的:

TwoWayView profileListView = (TwoWayView) convertView.findViewById(R.id.list);
profileListView.setAdapter(new ApplicationGroupAdapter(profilesToDisplay, details, this.getActivity()));

0 个答案:

没有答案