【问题标题】:overriding a style in android覆盖android中的样式
【发布时间】:2010-10-18 09:00:23
【问题描述】:

假设我有一个带有样式的布局:

<LinearLAyout ... >
    <TextView ... style=someStyle />
    <ImageView ... style=someImageStyle ... />
</LinearLayout>

样式将在我的项目的 xml 中定义。 如何使用外部 xml 覆盖该样式? (我问是因为我注意到视图没有 applyStyle\setStyle 或任何类似的东西(最好的选择,因为需要解析样式,与 android:attr 进行比较以进行验证,然后应用于视图的每个项目)。 我确实想知道如何为我的应用制作可下载的主题。

【问题讨论】:

  • 我确实阅读了 android 的“应用样式和主题”,已经没有提到这个问题 :-)
  • 你有没有偶然看到这个stackoverflow.com/questions/2016249/…
  • 是的,不幸的是我虽然...我认为这有点蹩脚我不能有一个像尺寸和颜色这样的加载器,例如一个用于创建属性对象的样式的加载器我可以传递给对象的 C'tor 或在 applyStyle() 中使用它与在 xml 文件中定义ever.ything 然后以编程方式设置它们相同

标签: android coding-style themes android-widget


【解决方案1】:

经过一些经验,我可以在这里在我自己的问题中分享我的想法...... 所以首先要注意的是,即使在你自己的风格中,也要尽可能多地使用尺寸、颜色和属性。这样,如果您想以编程方式将样式应用于视图,您可以使用 getResources.getDimen...、getRessources().getColor()、getResrouces.getDrawable() 等...

此外,您可以从 aapt 获取代码或打开现有 apk 并从那里获取已编译的 xml,然后使用相同的代码从 android 源代码读取 xml(请注意,这是 C 代码!!!)。我不会这样做的原因很简单,将简单的样式应用于视图是一种矫枉过正的做法。 编写方法所需的时间太短了。如果您必须在 xml 中执行此操作,您可以仅使用您的视图创建一个 xml 文件,然后对其进行扩充,但您无法在运行时替换样式。为此,您必须定义自己的机制来替换颜色、大小、背景等......并提供图像,这并不容易,如果我没记错的话,从本地存储中读取这些图像会降低生产力然后从资产或可绘制目录中读取它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-26
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 2020-12-20
    • 2020-08-26
    相关资源
    最近更新 更多