9

有很多方法可以设置 ListView 的样式以赋予它们优雅的外观,但所有这些都涉及修改适配器或编写额外的代码。

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

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

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

考虑到我提到的所有内容,我们如何控制 ListView 的外观?我不知道如何:

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

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

<theme name="SampleTheme" parent="android:Theme">
  ...
</theme>

我恳请不要发布不使用样式和主题的解决方案。它们可以在 Stack Overflow 上的另一个问题中轻松找到。

提前致谢。

4

1 回答 1

1

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

一种是简单地为您的列表视图使用一个主题,指定背景,这又是一个带有圆角的 9 补丁或您指定的 xml 形状(也带有圆角)。这将产生列表视图行选择器出现在您指定的背景“上方”的副作用,因此有点破坏效果。不过实现起来非常简单。

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

于 2014-01-14T23:02:17.810 回答