在可span的setSpan中创建图像和字符串之间的空间



我需要在按钮的中心放置一个图像和字符串。需要在它们之间创造空间。a Hello (%1$d)

我代码:

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:

android:layout_width="match_parent"
    android:layout_height="48dp"
    android:background="#2A2A2A"
    android:drawableLeft="@drawable/hello_image1"
    android:gravity="center"

如果你不需要在字符串中显示图标,你可以在按钮中添加drawable。例如,在文本的左侧有一个图标:

<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
}

相关内容

  • 没有找到相关文章

最新更新