能否通过编程设置drawableLeft?

6
在XML中,我们可以使用以下方式设置drawableLeft:
    <Button
    android:id="@+id/previewBtn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/white_btn"
    android:drawableLeft="@drawable/green_circle"
    android:drawablePadding="16dp"
    android:text="Button" />

如何以编程方式执行相同的操作?
2个回答

19

可以使用 setCompoundDrawablesWithIntrinsicBounds 方法,

将第一个参数定义为可绘制对象,其余参数全部设置为0。

代码应该类似于这样:

Button b = findViewById(R.id.myButton);

b.setCompoundDrawablesWithIntrinsicBounds(R.drawable.myDrawable, 0, 0, 0);

如果您的drawable也是在代码中创建的,那么您需要使用另一个setCompoundDrawablesWithIntrinsicBounds方法,该方法需要4个drawable,并对除左侧之外的所有位置传递null。


2
使用的方法是setCompoundDrawablesWithIntrinsicBounds。该方法使用所有四个可绘制选项(左,上,右,下),因此如果您只想要左边,请将其他选项传递为null

如果我想要居中对齐怎么办? - user3154663

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