gpt4 book ai didi

安卓 : Create your own attribute names in styles. xml

转载 作者:太空狗 更新时间:2023-10-29 13:15:27 25 4
gpt4 key购买 nike

我需要一些帮助,我已经浏览了一段时间,但我发现的主题都不能解决我的问题。希望你能帮助我!

开始吧:我有一个自定义 View ,我们称它为 CustomView。它也有一些自定义属性,在 attrs.xml 文件中定义,如下所示:

<declare-styleable name="CustomView">
<attr name="customBackgroundColor" format="color"/>
<attr name="customTextColor" format="color"/>
<attr name="customWhatever" format="dimension"/>
</declare-styleable>

此 View 是我要创建的库的一部分,因此我可以在多个项目中使用它。

有趣的部分来了:实际上,我会经常使用这个 View ,所以我想在 styles.xml 中定义一个样式来定义它的属性,这样我就不必进入每个 xml 布局文件我使用这个 View 来编辑它的属性。像这样:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="customViewStyle">@style/myCustomViewStyle</item>
</style>

<style name="myCustomViewStyle" parent="CustomViewStyle">
<item name="customBackgroundColor">@color/red</item>
<item name="customTextColor">@color/blue</item>
<item name="customWhatever">@dimen/someHeight</item>
</style>

所以我的问题是:如何定义这个“customViewStyle”键,如果可能的话,如何从中获取信息?

奖励:我已经能够通过这样做来创建这个“customViewStyle”键:

<attr name="customViewStyle" format="reference"/>

但我还没有找到如何利用它。

最佳答案

How do I define this "customViewStyle" key?

<attr name="customViewStyle" format="reference"/> , 任何<declare-styleable>标签。

But I haven't found yet how to exploit it.

创建具有所需属性的样式。你已经用 MyCustomViewStyle 做到了在你的帖子中输入,但你给了它一个不存在的父样式(据我所知)。我可能会使用 `parent="android:Widget"除非其他更合适。

我假设您的自定义 View 类已经使用 TypedArray 从 XML 中读取属性:

TypedArray a = context.obstainStyleAttributes(attrs, R.styleable.CustomView,
R.attr.customViewStyle, 0);

将最后一个参数替换为您刚刚定义的默认样式:

TypedArray a = context.obstainStyleAttributes(attrs, R.styleable.CustomView,
R.attr.customViewStyle, R.style.MyCustomViewStyle);

关于安卓 : Create your own attribute names in styles. xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35204454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com