带有复杂标题的Android ListView

时间:2011-02-24 07:41:27

标签: android listview header styling

我正在尝试将一个复杂/非平凡的标题添加到ListView(并且稍微复杂的页脚),需要与其他内容一起滚动。

标题由

组成
  • 带有粗体文字,黑色透明背景和圆角的TextView
  • 带有普通文字,黑色透明背景的TextView
  • 一个ImageView
  • 一个可点击的按钮(实际上是带有onClick的ImageView)和一个分隔符

我熟悉addHeaderView,但如果我尝试添加一个复杂的视图(由一个包含多个子节点的LinearLayout组成),我只会在listview中看到复杂标题的第一个子节点作为标题。

此外,设计中断(因为标题可能是透明的样式,ListView本身不是。也许这可以通过向ListView本身及其条目(不应该是透明的)添加更多样式来解决,但是我的印象是我只是在这里达到ListViews限制。

可以这样做吗?有没有人知道任何具有类似复杂头的应用程序(或更好的代码示例)?我能够找到的所有其他示例都是微不足道的标题:按钮,文本视图或图像(在线和在SO上),几乎没有有趣的样式。

2 个答案:

答案 0 :(得分:5)

我试图从头开始重新实现我的滚动列表视图,大致如下:

  • 带有背景图像和单个ListView的main.xml,带有20dip边距和 一些特定的造型:

    <item name="android:cacheColorHint">#00000000</item>
    <item name="android:scrollbars">@null</item>
    <item name="android:background">@android:color/transparent</item>
    
  • 包含线性布局(垂直)的headerlayout.xml,包含TextView,ImageView和另一个TextView。第一个TextView采用圆角顶角设计,两个文本视图都是透明的,图像上有一个clicklistener。

  • (类似风格的页脚)
  • 每个具有纯白色背景的列表项的自定义条目。

页眉/页脚大致如下添加

ListView list = (ListView) findViewById(R.id.list);
View header1 =  getLayoutInflater().inflate(R.layout.listheader, null, false);
View footer = getLayoutInflater().inflate(R.layout.listfooter, null, false);
ImageView image = (ImageView) header1.findViewById(R.id.image);

list.addHeaderView(header1, null, false);
list.addFooterView(footer, null, false);
list.setAdapter(new MenuAdapter());

这些都不是真正特别的。这主要是以正确的顺序进行操作,拆除并正确设计样式。

答案 1 :(得分:0)

我的建议是为这个过于复杂的列表视图项创建自定义视图。显然,这就是Android IO开发人员提出的建议。 如果您可以在自定义视图中执行此操作,那么您的所有问题都将得到解决。