2015-12-30 216 views
0

我創建了自定義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); 
    } 
} 
+0

你有沒有試過.append(「」); –

+0

你問是否將空格添加爲字符(「」)或作爲佈局中的空白空間? – naXa

+0

http://stackoverflow.com/questions/6863974/android-textview-padding-between-lines –

回答

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' 
} 
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文檔;
  3. SpannableString | Android文檔;
  4. CharSequence | Android文檔。
+0

我嘗試了相同的代碼,但它不起作用。 – jason

相關問題