草庐IT

Android ListView 主题

coder 2023-11-23 原文

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

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

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

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

考虑到我提到的所有内容,我们如何控制 ListView 的外观?我无法弄清楚如何:

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

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

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

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

提前致谢。

最佳答案

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

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

第二个选项是简单地始终将页眉和页脚添加到 ListView 中, ListView 的背景是顶部(和底部)带有圆角的选择器。如果你真的愿意,你也可以为它们指定样式。 对最后的评论感到抱歉,但我不得不说。请不要试图让您的应用看起来像 iPhone 应用:)

关于Android ListView 主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10758629/

有关Android ListView 主题的更多相关文章

  1. ruby-on-rails - 在暂存环境中覆盖 ActionMailer 主题 - 2

    我希望从我们的登台服务器发送的所有电子邮件的主题中都带有“[STAGING]”字样。在Rails3.2中使用ActionMailer是否有一种优雅的方式来做到这一点? 最佳答案 这是我使用ActionMailerInterceptor找到的一个优雅的解决方案基于anexistinganswer.#config/initializers/change_staging_email_subject.rbifRails.env.staging?classChangeStagingEmailSubjectdefself.delivering_

  2. ruby - 如何检查我的主题是否引发异常? - 2

    我目前正在subject中创建一个对象,需要测试这是否会引发异常。以下代码说明了我要实现的目标:describeMyClassdodescribe'#initialize'dosubject{MyClass.new}it{is_expected.not_toraise_error(Some::Error)}endend我有一种感觉,我正在以错误的方式处理这件事。将subject设置为新对象而不创建对象两次的首选方法是什么?更新我的问题有两个。首先,这种语法不起作用:it{is_expected.not_toraise_error}但是,在itblock中使用expect确实如此(正如J

  3. kafka如何动态消费新增topic主题 - 2

    一、解决痛点使用spring-kafka客户端,每次新增topic主题,都需要硬编码客户端并重新发布服务,操作麻烦耗时长。kafkaListener虽可以支持通配符消费topic,缺点是并发数需要手动改并且重启服务。对于业务逻辑相似场景,创建新主题动态监听可以用kafka-batch-starter组件二、组件能力1、新增topic名称为:auto.topic1(由于配置spring.kafka.consumer.prefix为auto,因此只有auto前缀的topic,才会被组件动态监听。)2、应用输出日志,监听到新增auto.topic1,并初始化客户端(主题刷新间隔为10s)3、发新的消

  4. ruby - 使用适用于 Ruby 的 AWS 开发工具包发布到 SNS 主题时指定区域 - 2

    我正在使用适用于Ruby的AWS开发工具包向Rails3应用程序发布消息和AWSSNS主题,如下所示:sns=AWS::SNS.newtopic=sns.topics['arn:aws:sns:eu-west-1:55555555555:my_topic']topic.publish("MESSAGE",:subject=>"SUBJECT")当我发布到“us-east-1”中的主题时,它按预期工作,但发布到“eu-west-1”区域中的主题时不起作用:AWS::SNS::Errors::InvalidParameter-Invalidparameter:TopicArn:使用AWSS

  5. ruby-on-rails - 如何处理 UTF-8 电子邮件 header (如主题 :) using Ruby? - 2

    我是一个电子邮件n00b,但我正在开发一个发送带有Unicode字符的HTML电子邮件的应用程序(正如我friend所说的“享受编码hell”)。Subject:header来自用户输入,因此可能包含Unicode字符。一些邮件客户端(如GMail和Outlook2007)对此没有问题,但从我的阅读来看,执行此操作的正确方法似乎是使用MIMEEncoded-Wordencoding对于标题。我找不到Ruby库来执行此操作。有吗?此外,是否有要添加的header告诉邮件客户端在显示消息时使用UTF-8?我们要发送多部分电子邮件,所以我们的Content-Type是multipart/mi

  6. ruby-on-rails - 如何更改 "Devise: password reset instruction email' 的主题” - 2

    我只是无法更改“密码重置说明”电子邮件的主题。我更改了Mailer中的notifer.rb以覆盖Devise默认电子邮件主题。但它不起作用。在我的应用程序中,Devise.yml文件中有默认的电子邮件主题。但我想通过从数据库中提取数据来动态更改它。 最佳答案 可以在intilizer目录下的devise.en.yml文件中修改并为任何邮件设置您自己的主题mailer:confirmation_instructions:subject:'Confirmationinstructions'reset_password_instructi

  7. ruby - 在现有的 Jekyll 安装中切换主题 - 2

    Jekyll有很多主题,例如https://github.com/jekyll/jekyll/wiki/Themes.在现有的Jekyll安装中切换到新主题的最简单方法是什么? 最佳答案 这是我为更改现有Jekyll安装的主题所做的。调整这些说明以满足您的需要。拉新主题我们创建一个新的孤立分支newtheme并确保它是空的。gitcheckout--orphannewthemegitrm-rf.gitclean-dfx然后我们通过将主题添加为上游远程来将主题文件拉入其中。在此示例中,我拉取了JohnOtander的Pixyll主题的

  8. javascript - 行为主题 : next is not a function - 2

    我正在尝试在同级组件之间共享数据并通过共享服务执行此操作。当第一个组件加载时,它从我的API中检索服务器列表,并用所有检索到的服务器填充一个选择框。现在我想在用户选择新服务器时通知我的其他组件,以便我可以显示它的详细信息。这是我的服务:@Injectable()exportclassDashboardService{servers:Server[]=[];selectedServer=newBehaviorSubject(null);setServers(servers:Server[]){this.servers=servers;}}带有选择框的组件:@Component({sele

  9. javascript - 有什么简单的方法可以使用 JQuery Mobile 动态切换主题吗? - 2

    如问题所述,有什么方法可以让我在JQueryMobile中动态切换主题。我今天刚刚升级到beta1并且认为如果用户可以根据需要选择自己的主题会很酷。我没有在文档中看到任何具体执行此操作的内容,但肯定有一些方法可以解决这个问题,如果有人能为我指出正确的方向的话。 最佳答案 不太确定,但在我看来它像jQueryMobile'sdemo里面有一个小主题切换器。看起来这是调用它的代码:$("#someElement").bind("vclick",function(){$.themeswitcher();});您可以找到主题切换器的代码ri

  10. javascript - 从 Twitter REST API 的实体(主题标签、链接、提及...)创建指向推文文本的链接 - 2

    我在一个网站中插入推文,但我在获取实体(主题标签、提及、链接...)时遇到了一点问题RESTApi为我们提供有关实体的信息,就像我们在这里看到的一样https://dev.twitter.com/docs/tweet-entities但是,api在字符串文本(tweet)中给我这个实体的索引,但是,如果我在这个tweet中插入一个链接,另一个链接将会改变,并且从所有案例中进行验证将花费很多时间。有人知道一些方法来做到这一点,一个简单的方法,或者jQuery或API中的某个插件可以为我们做到这一点?(附言:抱歉有些错误,我是一名巴西开发人员,我的英语不是很好:D)

随机推荐