我目前正在创建一个菜单,允许用户AppCompatImageView
在 a 中选择一个,GridLayout
并通过在图像的前景放置一个复选标记图标来显示该视图已被选中。在 api 23 中,我可以通过简单地调用来做到这一点,View.setForeground()
但在较低的 api 中,该方法不存在。我可以使用某种解决方法吗?
我试过使用 aLayerDrawable
但是如果我设置的图像android:src=
高度不同,复选标记图标会被挤压。这是现在的代码:
AppCompatImageView imageView = (AppCompatImageView) view;
int id = getResources().getIdentifier("drawable/" + view.getTag(), null, getPackageName());
Drawable backgroundLayer = ContextCompat.getDrawable(this, id);
Drawable foregroundLayer = ContextCompat.getDrawable(this, R.drawable.ic_selected);
Drawable[] layers = {backgroundLayer, foregroundLayer};
LayerDrawable layerDrawable = new LayerDrawable(layers);
imageView.setImageDrawable(layerDrawable);
这就是最终的样子:
当我希望支票是方形纵横比时。我想避免重做可绘制背景以使其成为方形纵横比,因为我还有大量其他可绘制对象也必须重做。