8

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

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

但是因为我在列表中使用它,

我需要删除未选择行的 drawableLeft 的选项,而不会出现对齐问题。

我想要的是:

  AAA
* BBB
  CCC  

我得到了什么:

AAA
* BBB
CCC  

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

但是我可以以编程方式控制这个 drawableLeft 可见性吗?

4

2 回答 2

2

我不确定您将drawable应用于哪种类型的视图,但您可以简单地设置左侧填充以匹配不存在时drawable的宽度。

View.setPadding(left, 0, 0, 0);
于 2013-10-16T10:31:06.873 回答
1

如果您使用 API 23 或更高版本,则可以使用android:drawableTint="@android:color/transparent"

否则你可以使用滤色器。例如,隐藏左边的drawable

Drawable[] drawables = tvLabel.getCompoundDrawables();
if (drawables[0] != null) { 
  drawables[0].mutate().setColorFilter(ContextCompat.getColor(getContext(),android.R.color.transparent), PorterDuff.Mode.MULTIPLY);
}
于 2018-05-29T13:46:10.910 回答