如何在每行的开头和结尾添加空格

时间:2015-12-30 08:07:59

标签: android

我创建了一个自定义textview类,我使用BackgroundColorSpan在后台应用颜色。如何在每行之前和之后添加空格。我真的很感激任何帮助。

final String test_str1 = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.";


public class CustomTextView extends TextView {
    public CustomTextView(Context context) {
        super(context);
        setFont();
    }

    public CustomTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        setFont();
    }

    public CustomTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        setFont();
    }

    private void setFont() {
        Typeface font = Typeface.createFromAsset(getContext().getAssets(), "fonts/TEXT.ttf");
        setTypeface(font, Typeface.NORMAL);

        Spannable myspan = new SpannableString(getText());
        myspan.setSpan(new BackgroundColorSpan(0xFF757593), 0, myString.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        txtview.setText(myspan);
    }
}

2 个答案:

答案 0 :(得分:0)

不只是简单地在Java中追加或添加带有空格的字符串。在第一个实例中,您应该寻找一个可以为您完成的库。

我发现Apache Commons Lang是一个很好的字符串操作。它具有类StringUtils,具有以下方法:

  

public static String appendIfMissing(String str, CharSequence suffix, CharSequence... suffixes)
  如果字符串尚未以任何后缀结尾,则将后缀附加到字符串的末尾。

     

public static String prependIfMissing(String str, CharSequence prefix, CharSequence... prefixes)   如果字符串尚未以任何前缀开头,则将前缀添加到字符串的开头。

String上的两个操作都是空安全的。

Linking the library对您的项目很简单。如果您使用Gradle,只需将此行添加到依赖项

dependencies {
    ...
    compile 'org.apache.commons:commons-lang3:3.4'
}

答案 1 :(得分:0)

另一种选择是使用JDK。 String.format()可用于左/右填充给定字符串。

public static String padRight(String s, int n) {
     return String.format("%1$-" + n + "s", s);
}

public static String padLeft(String s, int n) {
    return String.format("%1$" + n + "s", s);
}

public static String pad(String s, int n) {
    return padRight(padLeft(s, n), n);
}

// Usage example
String myString = getText().toString();
Spannable myspan = new SpannableString(pad(myString, 1));
myspan.setSpan(new BackgroundColorSpan(0xFF757593), 0, myString.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
txtview.setText(myspan);

参考文献:

  1. Source此答案中使用的方法;
  2. Format String Syntax | Java docs;
  3. SpannableString | Android文档;
  4. CharSequence | Android文档。