带有复杂标题的Android ListView

Ivo*_*ijk 6 android listview header styling

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

标题包括

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

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

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

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

Ivo*_*ijk 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>
    
    Run Code Online (Sandbox Code Playgroud)
  • 包含线性布局(垂直)的headerlayout.xml,包含TextView,ImageView和另一个TextView.第一个TextView采用圆角顶角设计,两个文本视图都是透明的,并且图像上有一个clicklistener.

  • (类似风格的页脚)
  • 每个listitem的自定义条目,具有纯白色背景.

页眉/页脚大致如下添加

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());
Run Code Online (Sandbox Code Playgroud)

这些都不是真正特别的.这主要是以正确的顺序做事,剥离和正确设计的问题.