2012-03-01 63 views
3

是否有一種方法可以在字母之間設置一個自定義空間(以像素爲單位)到editText?我只是如何設置兩條線之間的空間中,但在同一行字母之間BOT在textview中字母之間設置空格

+0

看看這裏http://stackoverflow.com/questions/1063268/is-it-possible-to-alter-the-letter-spacing-kerning-of-a-font-with-cocoa-touch – nvl 2013-11-25 08:25:15

+0

這不是一個IOS,目標C的問題,我需要在Android上實現這一點,就像你可以在問題的標籤中看到的一樣。 – 2013-11-25 08:39:23

+0

對不起,我沒有看到 – nvl 2013-12-05 01:57:20

回答

0

你可以implament定製TextWatcher,並添加X空間用戶每次enteres 1.

+0

赦免我的坦率,但這個解決方案是可怕的,但有效,但是很可怕。 – ademar111190 2012-07-02 15:10:20

+0

我同意,這是我的頭頂響應,你將如何實現這一目標? – robisaks 2012-12-10 01:01:13

0

我不得不這樣做今兒所以這裏有關於這個問題的一些更新:

從API 21可以使用XML屬性android:letterSpacing="2"或代碼myEditText.setLetterSpacing(2);

API 21之前,用TextWatcher用下面的代碼

private static final String LETTER_SPACING = " "; 

private EditText myEditText; 

private String myPreviousText; 

... 
// Get the views 
myEditText = (EditText) v.findViewById(R.id.edt_code); 

myEditText.addTextChangedListener(this); 
... 

@Override 
public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
    // Nothing here 
} 

@Override 
public void onTextChanged(CharSequence s, int start, int before, int count) { 
    // Nothing here 
} 

@Override 
public void afterTextChanged(Editable s) { 
    String text = s.toString(); 

    // Only update the EditText when the user modify it -> Otherwise it will be triggered when adding spaces 
    if (!text.equals(myPreviousText)) {    
     // Remove spaces 
     text = text.replace(" ", ""); 

     // Add space between each character 
     StringBuilder newText = new StringBuilder(); 
     for (int i = 0; i < text.length(); i++) { 
      if (i == text.length() - 1) { 
       // Do not add a space after the last character -> Allow user to delete last character 
       newText.append(Character.toUpperCase(text.charAt(text.length() - 1))); 
      } 
      else { 
       newText.append(Character.toUpperCase(text.charAt(i)) + LETTER_SPACING); 
      } 
     } 

     myPreviousText = newText.toString(); 

     // Update the text with spaces and place the cursor at the end 
     myEditText.setText(newText); 
     myEditText.setSelection(newText.length()); 
    } 
} 
相關問題