我需要在按钮的文字旁边添加图片。
使用XML可以设置android:drawableEnd,但是以编程方式和Api 10我找不到方法。
我尝试过:
button.setCompoundDrawablesWithIntrinsicBounds(0, 0, id, 0);
button.setPadding(0, 0, rightPadding, 0);
但是将文本移到左侧。我希望图像紧挨着文本。
有什么办法吗?
谢谢,抱歉我的英语不好
答案 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
)
}