我正在尝试以编程方式为列表项创建一个视图 - 它需要类似于原始的android复选框模板 - 这里是android原始模板xml:
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center_vertical"
android:checkMark="?android:attr/textCheckMark"
android:paddingLeft="6dip"
android:paddingRight="6dip"
/>
这是我的来源:
CheckedTextView ctv = new CheckedTextView(context);
ctv.setId(CTV_ID);
ctv.setCheckMarkDrawable(android.R.attr.textCheckMark);
ctv.setPadding(Utils.toDP(4, context), Utils.toDP(4, context), Utils.toDP(4, context), Utils.toDP(4, context));
问题出在setCheckMarkDrawable
行,我得到例外:
android.content.res.Resources$NotFoundException: Resource ID #0x1010046
显然我的代码无法访问此资源。 我该怎么做,我做错了什么,如何解决这个问题?
答案 0 :(得分:2)
好的,找到了解决方案:
TypedValue typedValue = new TypedValue();
context.getTheme().resolveAttribute(android.R.attr.textCheckMark, typedValue, true);
return typedValue.resourceId; // <- This is the actual resource id to be used
似乎需要将此值解析为当前主题资源ID。 类似的问题:background issue with styles and themes