【发布时间】:2013-04-24 01:26:31
【问题描述】:
我的项目中有一个要求,默认情况下 Edittext 的输入类型是数字。我们如何为用户提供一个选项以将输入类型数字更改为文本/字母。
谢谢 蒂鲁
【问题讨论】:
标签: android android-layout android-intent android-emulator
我的项目中有一个要求,默认情况下 Edittext 的输入类型是数字。我们如何为用户提供一个选项以将输入类型数字更改为文本/字母。
谢谢 蒂鲁
【问题讨论】:
标签: android android-layout android-intent android-emulator
您可以使用 android:inputType=text 并编写自己的验证代码来接受数字等后的数字/单个小数。
【讨论】:
如果你只想要 EditText 中的数字 你可以使用 - android:inputType="number" android:digits="0,1,2,3,4,5,6,7,8,9"
也使用 android:numeric。
【讨论】:
您可以使用切换按钮在数字和文本之间切换,反之亦然。
在您的布局 xml 中:
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="number" >
<requestFocus />
</EditText>
<ToggleButton
android:id="@+id/toggleButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="InputType"
android:textOff="Text"
android:textOn="Number" />
活动类:
EditText ed;
ToggleButton edtb;
//flag : used in the added code
static boolean flag = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ed = (EditText) findViewById(R.id.editText1);
edtb = (ToggleButton) findViewById(R.id.toggleButton1);
edtb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked)
{
ed.setInputType(InputType.TYPE_CLASS_TEXT);
}
else
{
ed.setInputType(InputType.TYPE_CLASS_NUMBER);
}
}
});
/* **Edited** Adding a way to achieve the same using EditText only. */
ed.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(flag)
{
ed.setInputType(InputType.TYPE_CLASS_TEXT);
flag=false;
}
else
{
ed.setInputType(InputType.TYPE_CLASS_NUMBER);
flag=true;
}
}
});
}
【讨论】:
先放入xml:
android:inputType="number"
动态地将输入类型数字更改为文本/字母。
edittext.setInputType(InputType.TYPE_CLASS_TEXT);
【讨论】:
ToggleButton 可以帮助您。创建监听器并将数字类型与一种状态关联,将文本与另一种状态关联,当用户单击按钮时,输入文本会发生变化。
【讨论】:
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number|text"
/>
【讨论】: