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

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



拉丁的传说
浏览 331回答 3
3回答

收到一只叮咚

除了michael的出色答案之外,另一方面是覆盖主题中的自定义属性。假设您有许多自定义视图,它们都引用自定义属性“ custom_background”。<declare-styleable name="MyCustomStylables">&nbsp; &nbsp; <attr name="custom_background" format="color"/></declare-styleable>在主题中定义值是什么<style name="MyColorfulTheme" parent="AppTheme">&nbsp; &nbsp; <item name="custom_background">#ff0000</item></style>要么<style name="MyBoringTheme" parent="AppTheme">&nbsp; &nbsp; <item name="custom_background">#ffffff</item></style>您可以使用样式来引用属性<style name="MyDefaultLabelStyle" parent="AppTheme">&nbsp; &nbsp; <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”的定义,而可以轻松切换主题。

动漫人物

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