如何以编程方式在按钮的文本旁边添加Drawable

时间:2014-08-04 16:19:09

标签: android android-layout android-button

我需要在按钮的文字旁边添加图片。

使用XML可以设置android:drawableEnd,但是以编程方式和Api 10我找不到方法。

我尝试过:

    button.setCompoundDrawablesWithIntrinsicBounds(0, 0, id, 0);

    button.setPadding(0, 0, rightPadding, 0);

但是将文本移到左侧。我希望图像紧挨着文本。

有什么办法吗?

谢谢,抱歉我的英语不好

2 个答案:

答案 0 :(得分:0)

相当于android:drawableEnd的是setCompoundDrawablesRelativeWithIntrinsicBounds(0, 0, id, 0)

setCompoundDrawablesWithIntrinsicBounds()的第三个参数与drawableRight匹配,而setCompoundDrawablesRelativeWithIntrinsicBounds()的第三个参数与drawableEnd匹配。

如果您尝试调整drawable和文本之间的填充,则应使用setCompoundDrawablePadding(int),而不是setPadding()。后者调整TextView 的填充和整个drawable,而前者将改变两者之间的填充。

<强>更新 遗憾的是,您无法在TextView(或Button)中的文本后立即绘制drawable。 drawableRight只会在TextView的最右侧绘制一个drawable。如果您将按钮的宽度设置为wrap_content,它将显示在您想要的位置,但按钮显然不会是正确的宽度。

在这种情况下,最好的解决方案可能是创建一个包含ImageView和TextView的RelativeLayout。您可以将RelativeLayout设置为看起来像一个按钮,并在其上设置单击侦听器。

答案 1 :(得分:0)

您可以使用SpanneableString

yourButtonView.text = SpannableString(" ${getString(R.string.your_string)}").apply {
     setSpan(
          ImageSpan(requireContext(), R.drawable.your_icon),
          0,
          1,
          Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
     )
}