【问题标题】:Xamarin android format string onkey pressedXamarin android 格式字符串 onkey 按下
【发布时间】:2016-09-22 17:08:11
【问题描述】:

我有这个 EditText,我希望用户在其中输入信用卡号,所以我想在用户输入时格式化字符串,我特别希望字符串每 4 个数字有一个空格,如下所示:

xxxx xxxx xxxx xxxx

我发现我可以使用 TextWatcher 和 onKeyUp 但我不明白如何在 EditText 中使用它,如果有人可以解释我将非常感激,谢谢。

【问题讨论】:

  • 您的意思是与EditText 一起使用吗?不允许用户输入TextView,所以这些都不起作用。
  • 是的,对不起,我的意思是 EditText

标签: android xamarin onkeyup


【解决方案1】:

创建一个实现ITextWatcher 接口的类。然后将该类的一个实例添加为文本更改侦听器...

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)
    {
    }
}

在您的活动中..(或片段中的OnCreateView

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

然后使用覆盖方法重新格式化文本以显示您需要的内容。

【讨论】:

  • 我需要在哪里放置代码?在 OnTextChanged 内部?为什么我需要覆盖 oncreate?
  • 你在activity的OnCreate方法(或片段的OnCreateView方法)中传递类的实例。
  • 谢谢!只有一件事,当我在字符之间放置空格时,焦点从字符串末尾变为 4 个字符之前,而不是:XXXX |它转到:|XXXX
  • 您可以访问编辑文本,因此您可以更改光标的位置
  • 谢谢!现在可以了!我添加了 _editText.SetSelection(_editText.Length());现在正在工作,非常感谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-04
  • 2011-11-09
相关资源
最近更新 更多