定义要在主题内使用的特定视图样式

欧姆尼布斯

我想为一个应用程序添加多个主题,并且可以通过编程方式进行选择。

如何在这些主题内为特定视图定义样式?

假设我有一个ImageView在以下位置显示徽标my_layout.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    />

    <ImageView 
        android:layout_width="250dp"
        android:layout_height="250dp"

        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"

        android:src="@drawable/ic_logo"
        android:contentDescription="@string/app_name"
        />
    <!-- ...other views... -->
</RelativeLayout>

如何更改src更改主题的ImageView的?

有没有一种方法可以为主题定义自定义元素,以便随后将其应用于特定视图?

就像是:

<resources xmlns:android="http://schemas.android.com/apk/res/android">

    <style name="MyTheme" parent="android:Theme.Holo.Light">
        <item name="logoImageView">@style/baseLogoImageView</item>
    </style>

    <style name="baseLogoImageView">
        <item name="android:src">@drawable/ic_logo</item>
    </style>

</resources>

然后在中使用它my_layout.xml

...
<ImageView style="@style/logoImageView"
...

上面的例子没有用;我遗漏了一些东西,或者无法实现该结果?

提前致谢。

欧姆尼布斯

我根据以下答案自己找到了解决方案

声明属性以用作样式参考:

<declare-styleable name="CustomThemeViews">
    <attr name="myViewStyle" format="reference"/>
</declare-styleable>

为每个主题定义样式:

<style name="myViewStyleTheme01">
    <item name="android:background">#f00</item>
</style>

<style name="myViewStyleTheme02">
    <item name="android:background">#0f0</item>
</style>

定义引用不同样式的主题:

<style name="AppTheme" parent="android:Theme.Light">
    <item name="myViewStyle">@style/myViewStyleTheme01</item>
</style>

<style name="AppThemeAlternative" parent="android:Theme.Light">
    <item name="myViewStyle">@style/myViewStyleTheme02</item>
</style>

在布局中使用主题样式

<ListView style="?attr/myViewStyle"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    ...

现在,应用于ListView的样式将根据所应用的主题进行更改。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

自定义视图样式,android的属性被忽略

来自分类Dev

在操作栏中实现自定义视图样式

来自分类Dev

自定义视图样式,android的属性被忽略

来自分类Dev

在多主题应用程序中更改单个视图样式的最佳方法

来自分类Dev

使用TileMill自定义OSM地图样式

来自分类Dev

通过编程设置的ToggleButton扩展的自定义视图样式

来自分类Dev

SystemResourceKey引用的WPF视图样式

来自分类Dev

如何使用解析库将大视图样式应用于通知

来自分类Dev

Laravel Auth脚手架视图样式丢失

来自分类Dev

视图样式在 React Native 中不起作用

来自分类Dev

如何使用具有特定主题的特定样式?

来自分类Dev

使用mapbox js,如何更改地图样式?

来自分类Dev

如何使用 Pandas 在离线图中更改散点图样式

来自分类Dev

如何在Rails的应用程序样式表之后包含视图样式表?

来自分类Dev

GreenDao:如何定义要在Android应用中使用的视图

来自分类Dev

我如何在本机视图中设置视图样式以制作功能区?

来自分类Dev

Excel Interop将工作表的视图样式设置为普通视图

来自分类Dev

如何在SwiftUI中根据@State更改导航视图的导航视图样式?

来自分类Dev

如何在React Native中以16:9的比例设置视图样式?

来自分类Dev

使用“数组样式”表是否比使用“地图样式”表提供更快的读取访问权限?

来自分类Dev

曼谷的Google地图样式

来自分类Dev

Angular js饼图样式

来自分类Dev

将自定义地图样式添加到Mapbox.js

来自分类Dev

自定义谷歌地图样式需要一秒钟才能加载

来自分类Dev

Android使用自定义主题来修改样式属性

来自分类Dev

使用回形针替换S3中的缩略图样式(第4条)

来自分类Dev

在 Deck.gl 中使用 openmaptiles.org 底图样式

来自分类Dev

在Windows 7中将“计算机”文件夹设置为其原始视图样式

来自分类Dev

如何限制自定义样式仅应用于特定模块的表单视图

Related 相关文章

  1. 1

    自定义视图样式,android的属性被忽略

  2. 2

    在操作栏中实现自定义视图样式

  3. 3

    自定义视图样式,android的属性被忽略

  4. 4

    在多主题应用程序中更改单个视图样式的最佳方法

  5. 5

    使用TileMill自定义OSM地图样式

  6. 6

    通过编程设置的ToggleButton扩展的自定义视图样式

  7. 7

    SystemResourceKey引用的WPF视图样式

  8. 8

    如何使用解析库将大视图样式应用于通知

  9. 9

    Laravel Auth脚手架视图样式丢失

  10. 10

    视图样式在 React Native 中不起作用

  11. 11

    如何使用具有特定主题的特定样式?

  12. 12

    使用mapbox js,如何更改地图样式?

  13. 13

    如何使用 Pandas 在离线图中更改散点图样式

  14. 14

    如何在Rails的应用程序样式表之后包含视图样式表?

  15. 15

    GreenDao:如何定义要在Android应用中使用的视图

  16. 16

    我如何在本机视图中设置视图样式以制作功能区?

  17. 17

    Excel Interop将工作表的视图样式设置为普通视图

  18. 18

    如何在SwiftUI中根据@State更改导航视图的导航视图样式?

  19. 19

    如何在React Native中以16:9的比例设置视图样式?

  20. 20

    使用“数组样式”表是否比使用“地图样式”表提供更快的读取访问权限?

  21. 21

    曼谷的Google地图样式

  22. 22

    Angular js饼图样式

  23. 23

    将自定义地图样式添加到Mapbox.js

  24. 24

    自定义谷歌地图样式需要一秒钟才能加载

  25. 25

    Android使用自定义主题来修改样式属性

  26. 26

    使用回形针替换S3中的缩略图样式(第4条)

  27. 27

    在 Deck.gl 中使用 openmaptiles.org 底图样式

  28. 28

    在Windows 7中将“计算机”文件夹设置为其原始视图样式

  29. 29

    如何限制自定义样式仅应用于特定模块的表单视图

热门标签

归档