为了账号安全,请及时绑定邮箱和手机立即绑定

如何:为自定义窗口小部件定义主题(样式)项

如何:为自定义窗口小部件定义主题(样式)项

红颜莎娜 2019-12-10 12:08:24
我为控件编写了自定义窗口小部件,我们在整个应用程序中广泛使用了该控件。小部件类ImageButton通过几种简单的方法派生并扩展它。我已经定义了一种样式,可以在使用时将其应用于小部件,但是我更愿意通过主题进行设置。在R.styleable我看到的小部件样式属性如imageButtonStyle和textViewStyle。有什么方法可以为我编写的自定义窗口小部件创建类似的东西吗?
查看完整描述

3 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

除了michael的出色答案之外,另一方面是覆盖主题中的自定义属性。假设您有许多自定义视图,它们都引用自定义属性“ custom_background”。


<declare-styleable name="MyCustomStylables">

    <attr name="custom_background" format="color"/>

</declare-styleable>

在主题中定义值是什么


<style name="MyColorfulTheme" parent="AppTheme">

    <item name="custom_background">#ff0000</item>

</style>

要么


<style name="MyBoringTheme" parent="AppTheme">

    <item name="custom_background">#ffffff</item>

</style>

您可以使用样式来引用属性


<style name="MyDefaultLabelStyle" parent="AppTheme">

    <item name="android:background">?background_label</item>

</style>

注意问号,也用于参考android属性,如


?android:attr/colorBackground

正如大多数人所注意到的那样,您可以-并且可能应该-使用@color引用而不是硬编码的颜色。


那为什么不做


<item name="android:background">@color/my_background_color</item>

您无法在运行时更改“ my_background_color”的定义,而可以轻松切换主题。



查看完整回答
反对 回复 2019-12-11
?
慕森王

TA贡献1777条经验 获得超3个赞

如果您的意思是开发人员可以使用的库,那么他们将能够创建自己的主题,并使用主题中的style属性(customImageButtonStyle在此答案中)指定小部件的样式。这就是在Android上自定义操作栏的方式。而且,如果您要在运行时更改主题,那么使用这种方法是不可能的。

查看完整回答
反对 回复 2019-12-11
  • 3 回答
  • 0 关注
  • 367 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信