Java 如何在不使用索引号的情况下,在SpanAbleStringBuilder中的2个字符串资源之间定位可绘制索引

Java 如何在不使用索引号的情况下,在SpanAbleStringBuilder中的2个字符串资源之间定位可绘制索引,java,android,textview,android-drawable,spannablestring,Java,Android,Textview,Android Drawable,Spannablestring,如何将可拉丝绳放在一根吊绳中的两条不同的弦之间?由于在不同语言中读取时单词中的字符长度不同,所以我不想使用整数作为索引号 TextView txt1 = new TextView(getActivity()); txt1.setTransformationMethod(null); SpannableStringBuilder ssb = new SpannableStringBuilder(); ssb.append(getString(R.string.hel

如何将可拉丝绳放在一根吊绳中的两条不同的弦之间?由于在不同语言中读取时单词中的字符长度不同,所以我不想使用整数作为索引号

    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);
    
另一种方式

  • 你可以用这个

    ssb.setSpan(span1, length, length + 2, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
    
    ssb.setSpan(span1, lengthSum - length2 - 2, lengthSum - length2, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
    
    • 试试这个

          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);
        
      另一种方式

      • 你可以用这个

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

      您想让您的可绘图界面介于
      hello world
      之间吗?您想让您的可绘图界面介于
      hello world
      之间吗?祝您好运。我很高兴帮助您。祝您好运。我很高兴帮助您。