gpt4 book ai didi

java - 如何在 SpannableStringBuilder 中将可绘制对象放置在 2 个字符串资源之间而不使用索引号

转载 作者:行者123 更新时间:2023-12-02 02:39:13 29 4
gpt4 key购买 nike

如何将可绘制对象放置在 SpannableString 中的 2 个不同字符串之间?由于用不同语言阅读时单词的字符长度不同,我不想使用整数作为索引号。

    TextView txt1 = new TextView(getActivity());
txt1.setTransformationMethod(null);
SpannableStringBuilder ssb = new SpannableStringBuilder();
ssb.append(getString(R.string.hello));
ssb.append(" ");
ssb.append(" ");
ssb.append(getString(R.string.world));

Drawable d1 = ContextCompat.getDrawable(getContext(), R.drawable.ic_arrows_leftandright_black);
d1.setBounds(0, 0, d1.getIntrinsicWidth(), d1.getIntrinsicHeight());
ImageSpan span1 = new ImageSpan(d1, ImageSpan.ALIGN_BASELINE);
ssb.setSpan(span1, 0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
txt1.setTextColor(Color.BLACK);
txt1.setText(ssb);

最佳答案

试试这个。

    SpannableStringBuilder ssb = new SpannableStringBuilder();
ssb.append(getString(R.string.hello));
ssb.append(" ");
ssb.append(" ");
ssb.append(getString(R.string.world));

// edited here , add length
int length = getString(R.string.hello).length();

Drawable d1 = ContextCompat.getDrawable(getContext(), R.drawable.ic_arrows_leftandright_black);
d1.setBounds(0, 0, d1.getIntrinsicWidth(), d1.getIntrinsicHeight());
ImageSpan span1 = new ImageSpan(d1, ImageSpan.ALIGN_BASELINE);

// edited here , add length to it
ssb.setSpan(span1, length, length + 2, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

注意

这是字符串的长度。

    int length = getString(R.string.hello).length();
int length2 = getString(R.string.world).length();
int lengthSum = ssb.length();
  • 如果 getString(R.string.hello) 位于左侧。 你可以使用这个。

    ssb.setSpan(span1, length, length + 2, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

另一种方式

  • 你可以使用这个。

    ssb.setSpan(span1, lengthSum - length2 - 2, lengthSum - length2, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

关于java - 如何在 SpannableStringBuilder 中将可绘制对象放置在 2 个字符串资源之间而不使用索引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45766372/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com