2016-09-22 79 views
0

我有這個EditText,我希望用戶鍵入一個信用卡號碼,所以我想格式化字符串,而用戶輸入它,我特別希望字符串有一個空間每一個4號,這樣的:Xamarin android格式字符串onkey按

XXXX XXXX XXXX XXXX

我發現我可以用TextWatcher和的onkeyup,但我不明白爲什麼在EditText上使用它,如果有一個人能解釋我,我真的很感激它,謝謝。

+0

你的意思是使用它與'EditText'?用戶不允許輸入「TextView」,所以這些都不會起作用。 –

+0

是的,對不起,我的意思是EditText – elunap

回答

1

創建一個實現ITextWatcher接口的類。然後(在片段或OnCreateView)添加一個實例類的文本改變了聽衆......

public class CreditCardFormatter : Java.Lang.Object, ITextWatcher 
{ 
    private EditText _editText; 
    public CreditCardFormatter(EditText editText) 
    { 
    _editText = editText; 
    } 

    public void AfterTextChanged(IEditable s) 
    { 
    } 

    public void BeforeTextChanged(ICharSequence s, int start, int count, int after) 
    { 
    } 

    public void OnTextChanged(ICharSequence s, int start, int before, int count) 
    { 
    } 
} 

在你的活動..

public override void OnCreate() 
{ 
    // other code.. 
    myEditText.AddTextChangedListener(new CreditCardFormatter(myEditText)); 
} 

然後使用重寫方法重新格式化文本展示您的需求。

+0

我需要在哪裏放置代碼? OnTextChanged內?爲什麼我需要重寫oncreate? – elunap

+0

您在活動的OnCreate方法中傳遞類的實例(或片段的OnCreateView方法)。 –

+0

感謝您的支持!只有一件事,當我在字符之間放置空格時,焦點從字符串的末尾更改爲4個字符之前,而不是: XXXX | 它轉到: | XXXX – elunap