从attrs.xml获取自定义属性的名称

时间:2013-02-21 15:02:43

标签: android xml

我在attrs.xml中创建了自定义属性:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="StarWars">
  <attr name="sw_jedi" format="string" />
  <attr name="sw_rank" format="string" />
</declare-styleable>

我获得R支持的int值(例如R.styleable.StarWars_sw_jedi)但是如何获取属性namejedi)?

编辑更具体:

我希望属性的“name”字符串不是R中的值(这是一个int):

例如,我想检索“jedi”而不是int(R.styleable.StarWars_sw_jediR.attr.sw_jedi

实际上我想要getAttributeName(R.styleable.StarWars_sw_jedi)

提前谢谢!

2 个答案:

答案 0 :(得分:1)

我已经使用了相同的样式并且正在完美地检查一次以供参考。

第1步:

通过在res / values文件夹

中创建文件attrs.xml来创建自定义样式

这里是attrs.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="StarWars">
  <attr name="sw_jedi" format="string" />
  <attr name="sw_rank" format="string" />
</declare-styleable>
</resources>

声明您在res/values/strings.xml

中指定的格式
   <string name="sw_jedi">Hi</string>
        <string name="sw_rank">Bye</string>

当我在我的java代码中使用时

它没有任何歧义。

如果你想获得jedi的价值就像这样

 String jedi=getResources().getResourceEntryName(StarWars_sw_jedi);

答案 1 :(得分:1)

嗯,我不知道为什么我没找到它,但我正在寻找的功能是getResourceEntryName,它实际上正是我想要的

在我的情况下,如果我想要“绝地”,我会这样做:

String name = getResources().getResourceEntryName(R.attr.sw_jedi);