能否通过编程设置drawableLeft的可见性?

8

我正在通过以下方式以编程方式添加/删除drawableLeft:

((TextView)view).setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_icon, 0, 0, 0); 
((TextView)view).setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0); 

但是因为我在列表中使用它,
我需要在不影响对齐的情况下删除未选行的drawableLeft。
我的要求:
  AAA
* BBB
  CCC  

What I'm getting:

AAA
* BBB
CCC  

我可以通过添加透明图标来解决它,

但是我是否可以通过编程控制drawableLeft的可见性?

2个回答

2

我不确定你将可绘制对象应用到哪种视图中,但是当它不存在时,你可以简单地将左边距设置为与可绘制对象的宽度相匹配。

View.setPadding(left, 0, 0, 0);

这仍然是一个权宜之计。如果这是唯一的方法,我更喜欢添加相同大小的透明图标。 - David

1
如果您的API版本是23或更高,可以使用android:drawableTint="@android:color/transparent"。否则,您可以使用颜色过滤器。例如,隐藏左侧的可绘制对象。
Drawable[] drawables = tvLabel.getCompoundDrawables();
if (drawables[0] != null) { 
  drawables[0].mutate().setColorFilter(ContextCompat.getColor(getContext(),android.R.color.transparent), PorterDuff.Mode.MULTIPLY);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接