0

我正在尝试以编程方式为列表项创建一个视图 - 它需要类似于原始的 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

很明显,我的代码无法访问此资源。我该怎么办,我做错了什么,如何解决这个问题?

4

1 回答 1

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。类似问题:样式和主题的背景问题

于 2013-03-25T22:38:35.353 回答