Android CheckedTextView如何获取choiceIndicator默认的可绘制名称?

时间:2017-05-10 12:15:08

标签: android android-view android-resources

有人知道在Drawablesandroid.R.attr.listChoi‌​ceIndicatorMultiple

中使用的名称默认android.R.attr.listChoi‌​ceIndicatorSingle?是什么

我想以编程方式在没有原始资源的模式之间切换。

无法使用这种方式:

view.setCheckMarkDrawable(android.R.attr.listChoi‌​ceIndicatorMultiple);

所以我试图找出android.R.attr.listChoi‌​ceIndicatorMultiple

引用的真实 drawable 名称

1 个答案:

答案 0 :(得分:1)

我在appCompat中找到了以下资源:

   static int checkMaterial = android.support.v7.appcompat.R.drawable.abc_btn_check_material;
   static int radioMaterial = android.support.v7.appcompat.R.drawable.abc_btn_radio_material;

它工作正常!

<强>被修改

更好的解决方案:

ViewHolder holder;...

TypedValue value = new TypedValue();
Resources.Theme theme =  holder.textView.getContext().getTheme();
int checkMarkDrawableResId;

if (isMultiSelectionEnabled) {

    theme.resolveAttribute(android.R.attr.listChoiceIndicatorMultiple, value, true);
    int checkMarkDrawableResId = value.resourceId;

} else {

    theme.resolveAttribute(android.R.attr.listChoiceIndicatorSingle, value, true);
    int checkMarkDrawableResId = value.resourceId;
}

holder.textView.setCheckMarkDrawable(checkMarkDrawableResId);