ContextCompat.getDrawable无法在Marshmallow上运行

时间:2016-01-13 07:18:10

标签: android android-drawable

我正在使用ContextCompat(v4支持库版本)以编程方式在我的代码中获取drawable。除了Marshmallow之外,它在所有Android版本上运行良好。我的意思是图像没有显示在android M的屏幕上。这是我正在使用的代码:

Drawable myDrawable = ContextCompat.getDrawable(mActivity, R.drawable.id);
myDrawable.setBounds(0, 0, (int) (myDrawable.getIntrinsicWidth() * 0.6), (int) (myDrawable.getIntrinsicHeight() * 0.6));
ScaleDrawable sd = new ScaleDrawable(myDrawable, 0, -1, -1);
mToggleButton.setCompoundDrawables(sd.getDrawable(), null, null, null);

1 个答案:

答案 0 :(得分:0)

我没有找到任何文档,但setProgressDrawable仅在setLayoutParams之前调用时才有效。此代码来自CursorAdapter。

这有效:

ProgressBar progressBar3 = (ProgressBar) view.findViewById(R.id.progressBar3);
        if(numScoreValues == 4){
        progressBar3.setProgressDrawable(ContextCompat.getDrawable(context,R.drawable.progress_green));
        }
        progressBar3.setMax(totalTargets);
        progressBar3.setProgress(userResultArray[3]);
        progressBar3.setLayoutParams(params);

这不起作用。进度条没有背景。

  ProgressBar progressBar3 = (ProgressBar)              view.findViewById(R.id.progressBar3);

        progressBar3.setMax(totalTargets);
        progressBar3.setProgress(userResultArray[3]);
        progressBar3.setLayoutParams(params);
if(numScoreValues == 4){
                progressBar3.setProgressDrawable(ContextCompat.getDrawable(context,R.drawable.progress_green));
        }