首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

EditText 文字印证

2012-09-21 
EditText文字验证android:numericinteger??只允许输入整数android:numerictrue 这条可以让输入法自

EditText 文字验证

android:numeric="integer"??只允许输入整数

android:numeric="true" 这条可以让输入法自动变为数字输入键盘,同时仅允许0-9的数字输入

?

android:digits="1234567890qwertyuiopasdfghjklzxcvbnm_" ??如果输入中文是不会显示

?

android:hint="请输入数字!" ??设置显示在空间上的提示信息

android:singleLine="true" ? ? ??设置单行输入,一旦设置为true,则文字不会自动换行。

android:password="true" ? ? ? ? ??设置只能输入密码

android:textStyle="bold"

android:capitalize = "characters" ??以大写字母写

android:textScaleX="1.5" ? ?控制字与字之间的间距

android:typeface="monospace" ??字型,normal, sans, serif, monospace

android:background="@null" ?空间背景,这里没有,指透明


android:editable="false" 设置EditText不可编辑

?android:ellipsize="end" 自动隐藏尾部溢出数据,一般用于文字内容过长一行无法全部显示时

?

?

?

?

?????????<?EditText

???????????????????android:id?=?"@+id/EditText01"

???????????????????android:layout_width?=?"fill_parent"

???????????????????android:layout_height?=?"wrap_content"

???????????????????android:hint?=?"type something here...?请输入?..."????????????????????????????//?输入提示

???????????????????android:textColorHint?=?"#FF00FF"?????????????????????????????????????????????????????//?提示文字的颜色

???????????????????android:lines?=?"4"?????????????????????????????????????????????????????????????????????????????????//?行数

???????????????????android:gravity?=?"top"???????????????????????????????????????????????????????????????????????????//?上对齐

???????????????????android:scrollbars?=?"vertical"?????????????????????????????????????????????????????????????//?垂直滚动条

?????????/>

在布局文件中,增加类似如下代码:

?????????<?EditText

???????????????????android:id?=?"@+id/EditText02"

???????????????????android:layout_width?=?"fill_parent"

???????????????????android:layout_height?=?"wrap_content"

???????????????????android:textSize?=?"50sp"

???????????????????android:textColor?=?"#FF0000"

???????????????????android:background?=?"#007F00"

?????????/>

?

得到的结果如下:

EditText    文字印证?

?

?

?

输入过滤器,可以用来规范在?EditText?中输入的内容。比如:

???? ???EditText txt02 = (EditText)findViewById(R.id.?EditText02?);

????????txt02.setFilters(?new?InputFilter[]

???????????????{

????????????????????new?InputFilter.AllCaps(),

????????????????????new?InputFilter.LengthFilter(2)

???????????});

class?CustomizedInputFilter?implements?InputFilter

{

??????????????public?CharSequence filter(CharSequence source,?int?start,?int?end,

?????????????????????Spanned dest,?int?dstart,?int?dend)

??????????????{

//????????????Log.e("debug", (String)source);

//????????????return (new String((String)source).toUpperCase());

?????????????????????//?下面是?InputFilter.AllCaps()?的源代码

?????????????????????for?(?int?i = start; i < end; i++)

????????????????? ???{

????????????????????????????if?(Character.isLowerCase?(source.charAt(i)))

???????????????????????? ???{

???????????????????????????????????char?[] v =?new?char?[end - start];

???????????????????????????????????TextUtils.getChars?(source, start, end, v, 0);

???????????????????????????????????String s =?new?String(v).toUpperCase();

?

????????????????????????????? ? ???if?(source?instanceof?Spanned)

???????????????????????????????????{

??????????????????????????????????????SpannableString sp =?new?SpannableString(s);

??????????????????????????????????????TextUtils.copySpansFrom?((Spanned) source, start, end,?null?, sp, 0);

??????????????????????????????????????return?sp;

???????????????????????????????????}

???????????????????????????????????else

???????????????????????????????????{

??????????????????????????????????????return?s;

???????????????????????????????????}

?????????????????????????????}

?????????????????????}

?????????????????????return?null?;?// keep original

??????????????}

???????}

?

?????????<?EditText

???????????????????android:id?=?"@+id/EditText03"

???????????????????android:layout_width?=?"fill_parent"

???????????????????android:layout_height?=?"wrap_content"

???????????????????android:password?=?"true"?????????????????????????????????????????????????//?密码输入框,会屏蔽输入的字符

?????????/>

????????

?????????<?EditText

???????????????????android:id?=?"@+id/EditText04"

???????????????????android:layout_width?=?"fill_parent"

???????????????????android:layout_height?=?"wrap_content"

???????????????????android:enabled?=?"false"??????????????????????????????????????????????????//?设定活动状态为?false?,既不能编辑,也不能

?????????/>????????????????????????????????????????????????????????????????????????????????????????????????? ????// focusable

AutoCompleteTextView?可以被认为是一种特殊的?EditText?,用户在?AutoCompleteTextView?中输入部分字符,就会得到和该输入字符匹配的列表,该列表由开发人员事先提供,用户只需要选择其中之一即可,这样可以节省用户输入的字符数,同时也可以减少出错的机会。比如,在布局文件?main.xml?中,有如下代码:

?????????<?AutoCompleteTextView

???????????????????android:id?=?"@+id/AutoCompleteTextView01"

???????????????????android:layout_width?=?"fill_parent"

???????????????????android:layout_height?=?"wrap_content"

???????????????????android:completionHint?=?"Pick a country or type your own"????????????????????????? ??//?下拉列表的提示

???????????????????android:dropDownHeight?=?"120px"?????????????????????????????????????????????????????????????????????//?下拉列表的高度

???????????????????android:completionThreshold?=?"1"??????????????????????????????????????????????????????????????????????//?键入多少字符,即可出现下拉列表

?????????/>

?

在?Activity?对应的?java?文件中:

public?class?ControlEditText?extends?Activity

{

???????//?定义一个字符串数组

???????????????final?String[]?COUNTRIES?= {?"China"?,?"Cuba"?,?"Costa Rica"?,

????????????????????????"Columbia"?,?"Canada"?,?"America"?,

????????????????????????"Africa"?,?"Belgium"?,?"India"?};

???????????????@Override

???????????????public?void?onCreate(Bundle savedInstanceState)

???????????????{

????????????????????super?.onCreate(savedInstanceState);

????????????????????setContentView(R.layout.?main?);

???????

?????????????????????//?构建一个?ArrayAdapter?对象

????????????????????ArrayAdapter<String> adapter =?new?ArrayAdapter<String>(?this?,

?????????????????????????????android.R.layout.?simple_dropdown_item_1line?,

?????????????????????????????COUNTRIES?);

???????

????????????????????//?获取?AutoCompleteTextView?对象?text

????????????????????AutoCompleteTextView text = (AutoCompleteTextView)findViewById(R.id.?AutoCompleteTextView01?);

????????????????????//?给?text?指定?ArrayAdapter?对象

????????????????????text.setAdapter(adapter);

???????????????}

}

?

?

其中用到的?ArrayAdapter?构造方法说明如下:

public ArrayAdapter (?Context?context, int textViewResourceId, T[] objects)

?

Parameters

context

The current context.

textViewResourceId

The resource ID for a layout file containing a TextView to use when instantiating views.

在?android.R.layout?包下,定义了许多诸如?simple_dropdown_item_1line?这样的?TextView?资源ID

objects

The objects to represent in the ListView.

?

运行代码,得到的结果如下:

EditText    文字印证?

?

输入一个字符?c?,则?adapter?中所有以?c(?缺省地,不区分大小写?)?大头的国家,会全部显示在下拉列表中,用户仅需要做一个简单的选择就可以了。如果?android:completionThreshold?的属性为?"2"?,那么用户需要输入两个字符,下拉列表才会出现。

MultiAutoCompleteTextView?也可以被认为是一种特殊的?EditText?,它的作用基本上和?AutoCompleteTextView?一样:用户在MultiAutoCompleteTextView?中输入部分字符,就会得到和该输入字符匹配的列表,该列表由开发人员事先提供,用户只需要选择其中之一即可,这样可以节省用户输入的字符数,同时也可以减少出错的机会。

?

它和?AutoCompleteTextView?唯一不同的地方就是:?AutoCompleteTextView?只有第一个输入的单词可以?auto complete?,而MultiAutoCompleteTextView?,则可以多次进行?auto complete?。在使用?MultiAutoCompleteTextView?的时候,要提供tokenizer?,?tokenizer?用于分隔单词。比如,在布局文件?main.xml?中,有如下代码:

?????????<?MultiAutoCompleteTextView

???????????????????android:id?=?"@+id/MultiAutoCompleteTextView01"

???????????????????android:layout_width?=?"fill_parent"

???????????????????android:layout_height?=?"wrap_content"

???????????????????android:completionHint?=?"Pick a country or type your own"

???????????????????android:dropDownHeight?=?"120px"

???????????????????android:completionThreshold?=?"1"

?????????/>

?

在?Activity?对应的?java?文件中:

public?class?ControlEditText?extends?Activity

{

???????????????final?String[]?COUNTRIES?= {?"China"?,?"Cuba"?,?"Costa Rica"?,

????????????????????????"Columbia"?,?"Chizen"?,?"Canada"?,?"America"?,

????????????????????????"Africa"?,?"Belgium"?,?"India"?};

???????????????@Override

???????????????public?void?onCreate(Bundle savedInstanceState)

???????????????{

????????????????????super?.onCreate(savedInstanceState);

????????????????????setContentView(R.layout.?main?);

???????

????????????????????ArrayAdapter<String> adapter =?new?ArrayAdapter<String>(?this?,

?????????????????????????????android.R.layout.?simple_dropdown_item_1line?,

?????????????????????????????COUNTRIES?);

???????

????????????????????AutoCompleteTextView text = (AutoCompleteTextView)findViewById(R.id.?AutoCompleteTextView01?);

????????????????????text.setAdapter(adapter);

???????

????????????????????//?获取?MultiAutoCompleteTextView?对象?text

????????????????????MultiAutoCompleteTextView mtext =

??????????????????????????????????????(MultiAutoCompleteTextView)findViewById(R.id.?MultiAutoCompleteTextView01?);

????????????????????//?依然使用前面构造好的?ArrayAdapter?对象

????????????????????mtext.setAdapter(adapter);

?????????????????????//?指定分隔符?”,”

????????????????????mtext.setTokenizer(?new?MultiAutoCompleteTextView.CommaTokenizer());

???????????????}

}

我们可以看到,输入?c?,然后可以在下拉列表中选择?China?,会自动增加一个分隔符。此时,输入?a?,则会把和?a?匹配的America?以及?Africa?显示在下拉列表中。

?

如果我们把?COUNTRIES?数组中的内容改为中文:

final?String[]?COUNTRIES?= {?"?印度?"?,?"?印度尼西亚?"?,?"?新加坡?"?,

???????????????"?新赤道几内亚?"?,?"?巴基斯坦?"?,?"?南非?"?,?"?南斯拉夫?"?,

???????????????"?北非?"?,?"?北爱尔兰?"?,?"?巴勒斯坦?"?};

可以看到,?AutoCompleteTextView?和?MultiAutoCompleteTextView?都支持中文:

?

?

?

?

热点排行