如何使用联系人头像设计listview,类似于ICS GTalk或Messaging应用程序?

时间:2012-12-03 20:21:30

标签: android android-listview android-imageview

我有一个listview,其项目包含左侧联系人的头像。在剩余空间中,有两行文本,第一行包含人名,第二行包含电子邮件地址(或其他任何文本)。

我想设置列表项的布局,以便:

  • 头像图像位于视图的最左侧。 左侧没有填充

  • 列表项的高度仅由两行文字的高度决定。无论图像是更大还是更小,imageview都必须匹配此高度

  • 图片视图的顶部或底部可能没有填充

  • 即使图像本身是矩形,imageview也必须始终为正方形。在这种情况下,图像应该“缩放”以填充整个正方形,可以垂直或水平裁剪,但纵横比必须保持不变。

这是来自ICS Messaging应用程序的屏幕截图,该应用程序符合所有这些标准:

enter image description here

我已经阅读了几个涉及android:scaleType的SO主题,尝试了scaleTypeadjustViewBoundswrapContent / match_parent设置的多种组合,但我从来没有对的。有人可以帮忙吗?

以下是一些简化的XML布局,可以作为起点:

<!-- The avatar -->
<ImageView
    android:id="@+id/contactImageView"
    android:layout_width="???"
    android:layout_height="???"
    android:layout_alignParentLeft="true" />

<!-- The 2-row textual layout -->
<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@+id/contactImageView"
    android:orientation="vertical" >

    <!-- First row -->
    <TextView
        android:id="@+id/nameTextView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

    <!-- Second row -->
    <TextView
        android:id="@+id/emailTextView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

1 个答案:

答案 0 :(得分:0)

如果你修改ImageView的宽度和高度并将ScaleType设置为centerCrop,你应该拥有你想要的。

<ImageView
    android:id="@+id/contactImageView"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_alignParentLeft="true"
    android:scaleType="centerCrop" />