android - 覆盖android中的样式

标签 android coding-style themes android-widget

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

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

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

最佳答案

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

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

关于android - 覆盖android中的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3957697/

相关文章:

java - 我需要比较纬度和经度坐标,这将告诉 GPS 用户哪家 Hooters 餐厅离他当前位置最近

安卓 :how to set Fixed no(5 ) of Rows shows in ListView then after Scroll?

android - 如何解决拆分的 apk 和 bundle 的版本代码之间的冲突?

coding-style - 一个人应该练习防御性编程的程度是多少?

javascript - html element.style.color 问题

c - 为什么 GNOME 不使用 C99?

css - 你如何重命名 CSS 规则?

reactjs - 使用 native-base 即时更改主题

android - AlertDialog 主题 : How to change item text color?

android - 为一个文件禁用 ANDROID 编译标志