首页 > 解决方案 > 如何在 android 中以编程方式在 SVG 上设置和获取色调颜色?

问题描述

我有ImageView一个 SVG 作为源示例:android:src="@drawable/bold_svg".

现在单击我想将色调颜色设置为color accent或将其返回为white. 两种状态。

我试过的:

    myImageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int currentColor, colorAccent;
            currentColor=ImageViewCompat.getImageTintList(myImageView).getDefaultColor();
            colorAccent=getResources().getColor(R.color.colorAccent);
            if (currentColor==colorAccent) {
                myImageView.setColorFilter(getResources().getColor(R.color.white_text_color));
            } else {
                myImageView.setColorFilter(getResources().getColor(R.color.colorAccent));
            }
        }
    });

看起来每次我单击按钮时,currentColor它都不会改变,所以else唯一被调用的就是!我错过了什么?

标签: javaandroidtint

解决方案


我设法找到了这样的答案:

    myImageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int currentColor, colorAccent;
            currentColor=ImageViewCompat.getImageTintList(myImageView).getDefaultColor();
            colorAccent=getResources().getColor(R.color.colorAccent);
            if (currentColor==colorAccent) {
                ImageViewCompat.setImageTintList(ivBold, ColorStateList.valueOf(ContextCompat.getColor(getApplicationContext(), R.color.white_text_color)));
            } else {
                ImageViewCompat.setImageTintList(myImageView, ColorStateList.valueOf(ContextCompat.getColor(getApplicationContext(), R.color.colorAccent)));
            }
        }
    });

推荐阅读