2017-05-10 9 views
1

誰かが、私はプログラム的に元resoucesの描画可能にunsingモードを切り替えたいandroid.R.attr.listChoi‌​ceIndicatorMultipleandroid.R.attr.listChoi‌​ceIndicatorSingle?Android CheckedTextView choiceIndicatorのデフォルトの描画可能な名前を取得する方法は?

で使用して名前のデフォルトDrawablesが何であるかを知っています。

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

は、だから私は、私がAPPCOMPAT内で見つけたandroid.R.attr.listChoi‌​ceIndicatorMultiple

+0

あなたがGoogle検索で "アンドロイド取得属性値" resutlsのようなものを意味ですか? – Selvin

+0

@Selvin、あなたは実行時間Attrをどのように使用するかについて知っていますか?あなたはすでにそれのような何かをしようとしていますか?あ、はい!私は質問を開く前に自分で研究してきました。コンポーネントのデフォルトのスタイルを調べることを試みました。 –

答えて

1

次のリソースが参照する実際の描画可能名前を把握しようとしている:

は、この方法を使用できません

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); 
関連する問題