是否可以通过编程方式设置drawableLeft?

时间:2012-05-08 20:46:13

标签: android

在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 个答案:

答案 0 :(得分:18)

是的,请使用setCompoundDrawablesWithIntrinsicBounds

并为第一个参数定义drawable,然后为所有其他参数定义0。

代码看起来像这样:

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

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

如果你的drawable也是在代码中创建的,那么你需要使用另外的setCompoundDrawablesWithIntrinsicBounds方法,该方法需要4个drawables,并且除了左边的所有方法都传递null。

答案 1 :(得分:2)

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