如何在 android 中以编程方式在 SVG 上设置和获取色调颜色?

How to set and get tint color on SVG programmaticaly in android?

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

现在单击我想将色调颜色设置为 color accent 或 return 到 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被调用了!我错过了什么?

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

    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)));
            }
        }
    });