自定义视图接受别名资源

时间:2015-05-17 01:19:28

标签: android

从自定义视图解析Alias Resource的最佳方法是什么?

资源

<array name="alias">@array/resource</array>
<array name="resource" >
    <item>@drawable/image1</item>
    <item>@drawable/image2</item>
</array>

XML表格

将别名资源传递到自定义视图

<dev.packge.CustomView
   xmlns:toolbox="http://schemas.android.com/apk/res-auto"
   toolbox:drawables="@array/alias" />

初始化自定义视图

TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CustomView, defStyleAttr, defStyleRes);
int drawables = a.getResourceId(R.styleable.CustomView_drawables, -1);
TypedArray resultTypedArray = getResources().obtainTypedArray(drawables);

代码表

将别名资源传递到自定义视图

CustomView c = (CustomView) new CustomView(getActivity());
c.setDrawables(R.array.alias);
c.Initialize();
ViewGroup.AddView(c);

初始化自定义视图

public void Initialize(){
  TypedArray resultTypedArray = getResources().obtainTypedArray(mDrawables);

问题陈述

在两种形式(来自XML或来自Code)中,传递别名资源时resultTypedArray为空。但是这个代码在直接传递@ array / resource或R.array.resource时会起作用。

1 个答案:

答案 0 :(得分:0)

我想我找到了答案...... array aliasing isn't support

  

注意:并非所有资源都提供了一种机制,您可以通过该机制为其他资源创建别名。特别是,xml /目录中的动画,菜单,原始和其他未指定的资源不提供此功能。