1

我正在制作自定义LayoutInflater.Factory并在 onCreateView() 方法中我想获取为当前视图指定的自定义属性。但是我不想为此属性声明样式。如果在这个视图的 xml 属性中指定了这个参数,我可以得到这个参数:如果它是在视图 attrs.getAttributeValue(null, attributeName);
的样式参数中指定的,我什至可以得到它使用: context.obtainStyledAttributes(attrs, new int[]{R.attr.custom_attribute);
但是,如果它在主题中指定,似乎不可能得到这个属性。任何帮助,将不胜感激。

这是我的xml资源:

<style name="CustomTheme"
       parent="android:Theme.DeviceDefault">
     <item name="android:textViewStyle">@style/TextView.Custom</item>
</style>

<style name="TextView.Custom">
    <item name="custom_attribute">"blabla"</item>
</style>

PS 我知道我应该为自定义属性声明 slyleable 资源,如果我这样做,它会起作用,但我想确保否则不可能,因为使用这种方式更简单。

4

1 回答 1

1

原来你可以用这个得到它:

TypedValue value = new TypedValue();
theme.resolveAttribute(android.R.attr.textViewStyle, value, true);
typedArray = theme.obtainStyledAttributes(value.resourceId, new int[] {R.attr.custom_attribute});
于 2013-01-15T13:17:43.543 回答