【发布时间】:2017-10-30 07:09:14
【问题描述】:
我目前正在创建一个菜单,允许用户在GridLayout 中选择AppCompatImageView,并通过在图像的前景放置一个复选标记图标来显示该视图已被选中。在 api 23 中,我可以通过简单地调用 View.setForeground() 来做到这一点,但在较低的 api 中,该方法不存在。我可以使用某种解决方法吗?
我尝试使用LayerDrawable,但如果我使用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);
这就是最终的样子:
当我希望支票是方形纵横比时。我想避免重做可绘制背景以使其成为方形纵横比,因为我还有大量其他可绘制对象也必须重做。
【问题讨论】:
标签: android android-drawable layerdrawable