Android ListView主题

有很多方法可以设置ListViews的样式以使它们看起来优雅,但所有这些都涉及修改适配器或编写其他代码。

随着Android 4.0的发布,不幸的事情必须改变。 谷歌打磨了他们的Holo主题并赋予它新的外观。 现在鼓励所有开发人员使用它,以使所有应用程序看起来都一样。

这就是问题所在。 谷歌推出了4.0,但仍有人使用较旧的Android版本。 我们不能只保留以前的自定义应用程序主题并使用Holo,因为它会破坏使用旧设备的用户的视觉体验。 我们不能强迫4.0用户只使用Holo,因为老实说 – 它仍然不完美。

目标是使用内置主题系统并为Holo准备一些替代品,这在所有设备上看起来都很棒。 然后我们可以只使用setTheme()在Holo和我们的主题之间切换,而不会出现其他问题。 不幸的是,事情并非那么简单。 我们仅限于现有主题系统的function,有些事情很难做到。 这是我的问题。

考虑到我提到的一切,我们如何控制ListView外观? 我无法弄明白,如何:

  • 创建带圆角的列表,并确保选择第一个/最后一个元素时选择器背景不会破坏它
  • 创建圆角不是为列表,而是由标题分隔的部分,如下所示: 在此处输入图像描述

该解决方案应该影响由PreferenceActivity创建的ListView,而无需任何额外的代码行。 一切都应该包含在主题中:

 ...  

我恳请不要发布不使用样式和主题的解决方案。 在Stack Overflow上可以很容易地find它们的另一个问题。

提前致谢。

我可以看到两种方法来解决这个问题。

一种是简单地使用主题为您的列表视图指定背景,而后者又是一个带有圆角的9补丁或您指定的xml形状(也有圆角)。 这会使listview行选择器的副作用出现在您指定的背景上,因此会破坏效果。 尽管如此,实施起来非常简单。

第二个选项是简单地总是在列表视图中添加页眉和页脚,列表视图的背景是顶部(和底部)带圆角的选择器。 如果你真的想要,也可以为这些指定样式。 对于这最后的评论感到抱歉,但我不得不说出来。 请不要试图让你的应用看起来像一个iPhone应用程序:)