Android 在Spanable setSpan中的图像和字符串之间创建空格
我需要在按钮的中心放置一个图像和字符串。需要在它们之间创建空间。 a你好%1$d 我的代码:Android 在Spanable setSpan中的图像和字符串之间创建空格,android,spannablestring,spannable,Android,Spannablestring,Spannable,我需要在按钮的中心放置一个图像和字符串。需要在它们之间创建空间。 a你好%1$d 我的代码: String textValue = getResources().getString(R.string.hello_text); final Spannable buttonLabel = new SpannableString(String.format(textValue, 2)); //buttonLabel.setSpan(new ImageSp
String textValue = getResources().getString(R.string.hello_text);
final Spannable buttonLabel = new SpannableString(String.format(textValue, 2));
//buttonLabel.setSpan(new ImageSpan(getApplicationContext(), R.drawable.hello_imagel,
// ImageSpan.ALIGN_BOTTOM), 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
mButton.setText(buttonLabel);
我需要在图像和文本之间留出空间。我尝试在strings.xml中提供空格,但它不显示空格。添加下面的xml后,图像位于左侧,字符串位于中间。我希望图像和字符串位于中间,图像和字符串之间只有很少的空格
xml:
如果不需要在字符串中显示图标,可以将drawable添加到按钮中。 i、 e.文本左侧的图标:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/icon"
android:drawablePadding="20dp">
其中@drawable/icon是您的图标,20dp是图标和文本之间的填充
舒尔您也可以从代码中执行同样的操作-查看setCompoundDrawables和setCompoundDrawablePadding抱歉迟到,我希望此方法对您有所帮助,kotlin上有:
fun setLeftIcon(roundButton: RoundButton, iconId: Int) = with(roundButton) {
if (iconId == DEFAULT_IMAGE_ID) return
val currentText = text.toString()
// The spaces are a workaround to add some space between the image and the text
val buttonLabel = SpannableString(" $currentText")
buttonLabel.setSpan(
ImageSpan(context, iconId),
0,
1,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
)
text = buttonLabel
}
我的问题有什么答案吗?似乎您正在尝试在可扩展字符串中添加零位置的图像,因此您可以删除代码并以与我上面所写相同的方式在xml文件中添加此图像。我尝试了您的想法,但填充无效。按钮重力设置为中心。我已经在问题中添加了我的xml。是的,我尝试了20dp和50dp。它总是在左边的角落啊。。。你已经修改了这个问题。我以为你希望图像在左边。我发布的代码没有帮助。尝试此扩展ImageSpan类并重写以下几种方法:
fun setLeftIcon(roundButton: RoundButton, iconId: Int) = with(roundButton) {
if (iconId == DEFAULT_IMAGE_ID) return
val currentText = text.toString()
// The spaces are a workaround to add some space between the image and the text
val buttonLabel = SpannableString(" $currentText")
buttonLabel.setSpan(
ImageSpan(context, iconId),
0,
1,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE
)
text = buttonLabel
}