在spannable setSpan中创建图像和字符串之间的空格

时间:2014-06-17 17:18:35

标签: android spannablestring spannable

我需要在按钮的中心放置一个图像和字符串。需要在它们之间创建空间。 你好(%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"

2 个答案:

答案 0 :(得分:0)

如果您不需要在字符串中显示图标,则可以将drawable添加到按钮中。 即文本左侧的图标:

<Button
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:drawableLeft="@drawable/icon"
     android:drawablePadding="20dp">

其中@ drawable / icon是你的图标,20dp是图标和文字之间的填充

Shure你可以从代码中做同样的事情 - 看看setCompoundDrawables和setCompoundDrawablePadding

答案 1 :(得分:0)

对不起,我希望这种方法对您有帮助,

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
}