XML和Java之间的常量值

3

我知道这是一个简单的问题,希望不会给任何人带来麻烦。

如何在我的项目中拥有一个常量浮点值,以便我可以从View的XML和.java文件中访问?

我尝试在我的View资源文件中设置一个浮点值,如下所示:

<attr name="cornerRadius" format="float">15.0dp</attr>

我相信这是正确的做法,但我只是凭直觉做了。我在这个主题上遇到了很大的困难,不知道该搜索什么关键词。
现在,为了在Java中访问它,我尝试了这个:
float myFloat = getContext().obtainStyledAttributes(attrs, R.styleable.MyView).getFloat(R.styleable.MyView_cornerRadius, 0.0f);

这让我感到困惑,因为它没有得到正确的值,而是传递给函数的值。为什么要将浮点数值传递给此函数?肯定有其他选项。
现在,对我来说最大的问题是在XML中访问它。我已经尝试过这样做:
<corners android:radius="@attrs_my_view/cornerRadius"/>

我也尝试过这个:

<corners android:radius="@float/cornerRadius"/>

但是没有任何效果。

也许这一切都是完全错误的,但我不知道如何在Google中搜索它,因为我不知道它叫什么。就像根据单词的意思在字典中查找单词一样,这并不是一个好时机。


1
请参阅 https://dev59.com/03A75IYBdhLWcg3wKlqM 了解有关定义自定义属性的信息。希望对您有所帮助。 - Code-Apprentice
@Code-Guru 是的!这非常有帮助,尽管我对 TypedArray 中的 getFloat(int, float) 方法还有些困惑。 - RileyE
就我所知,我通过谷歌搜索“attr android”找到了那个链接。谷歌搜索并不需要很复杂的操作;-)如果你需要进一步的解释,请随时编辑你的问题或者发布一个新的问题。 - Code-Apprentice
1个回答

1
你可以创建一个XML文件来存储常量。这听起来像是一个维度,通常存储在dimens.xml文件中。将其放置在res/values文件夹中。
所以,你可能会有一个文件(名为dimens.xml),其中包含以下内容:
<resources>
    <dimen name="cornerRadius">15dp</dimen>

</resources>

然后你可以使用普通的R.class引用它(例如R.dimen.cornerRadius)- 你可以从XML或Java中引用它。

尺寸是一个浮点数值和一个度量单位,而不仅仅是一个浮点数值。 - CommonsWare
我通常在这里使用DP值(即180dp)。不确定如何与浮点数一起使用(你能帮我澄清一下吗?然后我会更正答案)- 或者你可以编辑一下吗? - Booger
@CommonsWare 你在谈论什么“dimension”?我如何以编程的方式声明和获取它? - RileyE
让我们在聊天中继续这个讨论。 - RileyE
将我的原始答案更改为使用dp(这也是我一直以来的做法)。 - Booger
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接