Roc*_*uy3 6 android colors android-layout
我正在开发一个应用程序,它将以不同的颜色和图像为主题,为不同的客户.虽然我可以选择在构建时使用自定义颜色重写colors.xml文件,但我倾向于在运行时设置颜色.我想知道的是,如果这是以某种方式以编程方式更改colors.xml文件中定义的颜色的值,并使该新值在布局定义中使用它的所有位置生效.
换句话说,如果我有:
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<color headerColor="white">#FFF</color>
<color backgroundColor="black">#000</color>
</resources>
Run Code Online (Sandbox Code Playgroud)
和一个布局文件,如:
<TextView
android:id="@+id/listItemHeaderActivity"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="12sp"
android:textColor="@color/headerColor"
android:background="@color/backgroundColor"
android:text="@string/listTextHeaderActivity"/>
Run Code Online (Sandbox Code Playgroud)
我可以在Java中更改和的值,headercolor并backgroundColor在所有使用这些值的视图中进行更改吗?或者,每当我显示这些视图时,我是否必须单独更改每个相关的视图颜色?
提前致谢.
如果您描述了为什么以及如何使用这种动态颜色,以及为什么要在运行时而不是构建时执行此操作,将会有所帮助。但假设它必须是你问的方式......
\n\n我建议编写一个辅助函数,所有地方都可以调用并设置它们。
\n\npublic int getMyColor(...) {\n // figure out which color to use, via a database call,\n // an asset load, some algorithm, or whatever you need\n ...\n\n // once color chosen, create an RGBA integer for it\n final int myColor = ...\n\n return myColor;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n现在在每个需要它的活动/片段上调用它,并根据需要在适当的视图上设置颜色属性。(与View.setBackgroundColor(...)等)
但是,为了允许它在 XML 设置和/或开发布局预览中工作,您还必须编写一个自定义视图类来调用该辅助函数。根据您将在何处以及如何使用这种颜色,它可能不值得。
\n\n此解决方案不是很优雅,并且需要在每个需要它的活动/片段中大量调用此自定义 getMyColor 辅助函数。如果只设置一两个地方,那可能没什么大不了的。同样,了解您为什么要这样做而不是询问我们如何做,可能会为您带来更好的选择。
\n\n例如\xe2\x80\x94这不是您问题的答案\xe2\x80\x94但是您考虑过主题吗?它仍然存在必须在构建时设置它们的问题,除非您想要上述所有内容,但根据您如何使用这种颜色,它可能比我上面概述的混乱更好。
\n| 归档时间: |
|
| 查看次数: |
3823 次 |
| 最近记录: |