android edittext 手机号码,Android中EditText中的电话号码格式

在Android的EditText中输入电话号码时,如何设置(xxx)xxx-xxxxx格式的电话号码?

我想要(,),-字符自动添加到特定位置.

我写了代码,但仅在andorid 2.2版本中有效,而在上述版本中无效.

我在stackoverflow中搜索了更多问题.

请检查我的代码:

phone.addTextChangedListener(new TextWatcher () {

@Override

public void afterTextChanged(Editable chars) {

// TODO Auto-generated method stub

}

@Override

public void beforeTextChanged(CharSequence s, int start, int count,

int after) {

// TODO Auto-generated method stub

}

@Override

public void onTextChanged(final CharSequence s, final int start, int lengthBefore,

int lengthAfter) {

// TODO Auto-generated method stub

count = start;

/*if (phone.getText().length() <= 0) {

phone.append("(");

phone.setSelection(1);

}else if (count == 3) {

phone.append(")");

}else if (count == 7) {

phone.append("-");

}

*/

}

});

phone.setOnKeyListener(new OnKeyListener (){

@Override

public boolean onKey(View arg0, int arg1, KeyEvent arg2) {

// TODO Auto-generated method stub

if(arg1 == KeyEvent.KEYCODE_DEL){

if(count > 0){

count = count - 1;

}

}else{

if(phone.getText().length() <= 0){

phone.append("(");

}else{

if(count == 3){

phone.append(")");

}else if(count == 7){

phone.append("-");

}

}

}

return false;

}

});

}

Logcat显示为:

01-03 15:07:23.529: W/InputManagerService(153): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@40900f88

01-03 15:07:23.529: D/StatusBarPolicy(221): mFullChargeListener

01-03 15:07:25.749: V/AudioPolicyManager(84): startOutput() output 1, stream 1, session 1488

01-03 15:07:25.749: V/AudioPolicyManager(84): changeRefCount() stream 1, count 1

01-03 15:07:25.749: V/AudioPolicyManager(84): getDeviceForStrategy() from cache strategy 0, device 2

01-03 15:07:25.749: V/AudioPolicyManager(84): getNewDevice() selected device 2

01-03 15:07:25.749: V/AudioPolicyManager(84): setOutputDevice() output 1 device 2 delayMs 0

01-03 15:07:25.749: V/AudioPolicyManager(84): setOutputDevice() setting same device 2 or null device for output 1

01-03 15:07:25.749: V/AudioPolicyManager(84): releaseOutput() 1

01-03 15:07:25.769: V/AudioHardwareMSM72XX(84): open driver

01-03 15:07:25.769: V/AudioHardwareMSM72XX(84): get config

01-03 15:07:25.769: V/AudioHardwareMSM72XX(84): set config

01-03 15:07:25.769: V/AudioHardwareMSM72XX(84): buffer_size: 4800

01-03 15:07:25.769: V/AudioHardwareMSM72XX(84): buffer_count: 2

01-03 15:07:25.769: V/AudioHardwareMSM72XX(84): channel_count: 2

01-03 15:07:25.769: V/AudioHardwareMSM72XX(84): sample_rate: 44100

01-03 15:07:25.939: W/AudioFlinger(84): write blocked for 164 msecs, 61 delayed writes, thread 0xcdd0

01-03 15:07:26.009: V/AudioPolicyManager(84): stopOutput() output 1, stream 1, session 1488

01-03 15:07:26.009: V/AudioPolicyManager(84): changeRefCount() stream 1, count 0

01-03 15:07:26.009: V/AudioPolicyManager(84): getNewDevice() selected device 0

01-03 15:07:26.009: V/AudioPolicyManager(84): setOutputDevice() output 1 device 0 delayMs 0

01-03 15:07:26.009: V/AudioPolicyManager(84): setOutputDevice() setting same device 0 or null device for output 1

01-03 15:07:26.699: V/AudioPolicyManager(84): startOutput() output 1, stream 1, session 1489

01-03 15:07:26.699: V/AudioPolicyManager(84): changeRefCount() stream 1, count 1

01-03 15:07:26.699: V/AudioPolicyManager(84): getDeviceForStrategy() from cache strategy 0, device 2

01-03 15:07:26.699: V/AudioPolicyManager(84): getNewDevice() selected device 2

01-03 15:07:26.699: V/AudioPolicyManager(84): setOutputDevice() output 1 device 2 delayMs 0

01-03 15:07:26.699: V/AudioPolicyManager(84): setOutputDevice() setting same device 2 or null device for output 1

01-03 15:07:26.699: V/AudioPolicyManager(84): releaseOutput() 1

01-03 15:07:26.859: V/AudioPolicyManager(84): stopOutput() output 1, stream 1, session 1489

01-03 15:07:26.859: V/AudioPolicyManager(84): changeRefCount() stream 1, count 0

01-03 15:07:26.859: V/AudioPolicyManager(84): getNewDevice() selected device 0

01-03 15:07:26.859: V/AudioPolicyManager(84): setOutputDevice() output 1 device 0 delayMs 0

01-03 15:07:26.859: V/AudioPolicyManager(84): setOutputDevice() setting same device 0 or null device for output 1

01-03 15:07:27.499: I/StatusBarPolicy(221): BAT. status:5 health:2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android EditText可以输入文,只需要在布局文件设置EditText的inputType属性为text,即可支持文输入。同时,需要注意设置EditText的imeOptions属性,以便在输入文时能够正确地显示软键盘和输入法。如果需要限制输入的字符类型,可以通过设置EditText的inputType属性来实现。例如,设置inputType为textPassword可以限制输入的字符为密码类型。 ### 回答2: Android Edittext是我们在开发Android应用时最常用到的输入框,而输入文又是常见需求之一,下面将从以下几个方面进行分析: 1. 设置输入法 Android系统提供了多种输入法,其包括了支持文输入的输入法,我们可以通过IME(Input method editor)来设置当前输入法。在Edittext的xml文件,我们可以通过以下代码指定关闭软键盘的输入方式: android:inputType="text" 如果希望开启软键盘输入方式,可以按照如下示例代码设置输入类型: android:inputType="text|textCapWords|textMultiLine|textAutoCorrect|textAutoComplete" 2. 监听文本变化 在监听文本变化时,我们可以实现TextWatcher接口来实现监听事件,该接口提供了三个方法,分别是beforeTextChanged,onTextChanged,afterTextChanged,我们可以在方法对文本输入状态进行相应的处理。 示例代码如下: editText.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { } }); 3. 格式化输入内容 当用户输入完成后,我们有时需要对输入的内容进行格式化,比如限制输入字符长度,限制输入类型等。这时我们可以通过使用InputFilter来实现: 示例代码如下: InputFilter[] filters = new InputFilter[1]; filters[0] = new InputFilter.LengthFilter(10);//限制输入长度为10个字符 editText.setFilters(filters); 4. 自定义键盘 有时候我们需要在特殊场景下使用特殊键盘进行输入,这时我们可以自定义键盘来实现,具体如何实现可以参考以下示例代码: 示例代码: 在xml文件加入TextInputLayout和TextInputEditText控件: <com.google.android.material.textfield.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" app:hint="请输入内容"> <com.google.android.material.textfield.TextInputEditText android:id="@+id/edit_text" android:layout_width="match_parent" android:layout_height="wrap_content" /> </com.google.android.material.textfield.TextInputLayout> 在Activity通过TextInputEditText调用setOnFocusChangeListener方法,当EditText获取焦点时弹出自定义键盘。 textInputEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if(hasFocus){ //弹出自定义键盘 } } }); 自定义键盘,我们可以通过调用TextInputEditText的setText方法来设置输入内容。 5. 其他技巧 除了以上几个方面之外,我们还可以采用其他一些技巧来实现输入文的需求,如设置android:ellipsize属性来限制输入内容显示的长度,或通过android:fontFamily属性设置文字体等。 综上,对于输入文这个常见需求,通过深入研究EditText控件的属性和使用方法,我们可以实现自定义的输入方式,提高用户输入效率,提高应用的用户体验。 ### 回答3: Android EditText是一种常用的文本输入框控件,通常用于收集用户输入的文本信息。在应用程序,有时需要用户输入文,因此这就需要在EditText支持输入文。 在Android,系统提供了多种方式支持EditText输入文。以下是其一些常见的方法: 1. 使用系统自带的输入法:Android系统自带了多种输入法,包括文输入法。用户可以在设置选择并启用文输入法。当EditText获得焦点时,会自动弹出该输入法,并且用户可以直接在EditText输入文。 2. 使用第三方输入法:Android系统支持安装第三方输入法,用户可以在应用商店下载并安装适合自己的第三方输入法。与系统自带的文输入法类似,用户可以在EditText使用第三方输入法输入文。 3. 代码使用IME:IME是输入法,此处指Android系统内置的软键盘工具。IME在应用程序通常通过调用方法来显示和隐藏。如果想要在应用程序手动弹出IME,并且支持文输入,可以通过代码设置InputType属性来支持文输入,如下所示: EditText editText = (EditText) findViewById(R.id.editText); editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_TEXT_FLAG_IME_MULTI_LINE); 此代码将EditText设置为支持多行文输入。用户在EditText可以直接输入文。 总之,在Android支持EditText文输入有多种方式,这些方法可根据应用场景进行选择。由数据包助手提供答案,仅供参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值