Android EditText的常用技巧

1.       设定 EditText 的滚动条、对齐方式、行数、和提示 (hint) 及其颜色

在布局文件,比如 main.xml 中,增加

< 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"                                                             // 垂直滚动条

/>

在 Activity 对应的 Java 文件中,指定包含上述代码的 Layout( 即 main.xml) :

setContentView(R.layout. main );

得到的结果如下:

2.     设定 EditText 中的文字大小、文字颜色和 EditText 的背景颜色

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

< EditText

android:id = "@+id/EditText02"

android:layout_width = "fill_parent"

android:layout_height = "wrap_content"

android:textSize = "50sp"

android:textColor = "#FF0000"

android:background = "#007F00"

/>

得到的结果如下:

3.      输入过滤器的使用 (Input Filter)

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

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

txt02.setFilters( new InputFilter[]

{

new InputFilter.AllCaps(),

new InputFilter.LengthFilter(2)

});

则 txt02 这个 EditText 最多接收 2 个字符 ( 或者中文字 ) ,并且会自动转换为大写。

程序员可以自己定义 InputFilter ,类似的代码如下 ( 必须重写 InputFilter 接口中定义的 filter 方法 ) :

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

}

}

4.     指定 EditText 为密码输入框和设定 EditText 激活状态

< 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

具体效果就不演示了。

5.     AutoCompleteTextView 的使用

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 ( Contextcontext, 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.

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

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

选择输入完成后,用户可以继续在上面的 EditText 中继续输入。

6.     MultiAutoCompleteTextView 的使用

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 都支持中文:

时间: 2024-11-06 07:32:47

Android EditText的常用技巧的相关文章

Android之ListView常用技巧

ListView是一个非常常用的列表控件,虽然在5.x时代ListView的风头正在逐渐的被RecyclerView抢去,但是ListView的使用范围依然十分广泛. 接下来的ListView的常用技巧是在平时的开发和学习中了解到的,如有雷同,纯属我抄! 技巧1:设置项目间分隔线 技巧2:隐藏滚动条 技巧3:设置第一个可视条目是第几项 技巧4:添加/取消item的点击效果. 技巧5:处理数据项为空的时候的ListView 技巧6:动态更新ListView 下面依次介绍 1.设置项目间的分割线 这

Android ViewTreeObserver的常用技巧

原文地址: https://blog.csdn.net/geekzhe/article/details/47003811 Aview tree observer is used to register listeners that can be notified of globalchanges in the view tree. Such global events include, but are not limited to,layout of the whole tree, beginn

android 布局优化常用技巧

android对多个模块都要是要的UI逻辑的致辞除了fragment之外,没有别的东西可以支持了, include,merge,viewstub只能支持公用的ui,但是这个通用支持不能包含逻辑(java代码)的. 1.使用include标签 这个标签只是启动重复某个UI xml文件的作用,android框架在解析的时候没有什么优化,唯一的作用就是起到方便管理的作用了. 当解析到 include 标签的时候,就从它的layout属性中拿出 布局文件,解析这个布局,替代include标签的节点 2.

Android UI 中常用技巧总结

线性布局 分割线 android:divider="@drawable/shape"<!--分割线图片--> android:showDividers="middle|beginning|end" <!--分割线位置-->

【读书笔记-《Android游戏编程之从零开始》】4.Android 游戏开发常用的系统控件(EditText、CheckBox、Radiobutton)

3.4 EditText EditText类官方文档地址:http://developer.android.com/reference/android/widget/EditText.html EditText继承TextView,所以EditText具有TextView的属性特点,下面主要介绍一些EditText的特有的输入法的属性特点android:layout_gravity="center_vertical":设置控件显示的位置:默认top,这里居中显示,还有bottomand

最强 Android Studio 使用小技巧和快捷键【非原创】

(发现本文是个很不错的文章,相当实用,特分享与大家.分享自:http://m.open-open.com/m/lib/view/1458715872710.html 特此声明,好记性不如烂笔头,market下来以备后用) 原文如下: 写在前面 本文翻译自 Android Studio Tips by Philippe Breault,一共收集了62个 Android Studio 使用小技巧和快捷键. 根据这些小技巧的使用场景,本文将这62个小技巧分为常用技巧(1 – 28).编码技巧(29 –

android editText 软键盘enter键图标的设置

<EditText android:layout_marginTop="10dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="输入单位" android:layout_marginLeft="10dp" android:layout_marginRight="1

Android EditText属性说明

1.EditText输入的文字为密码形式的设置 (1)通过.xml里设置: 把该EditText设为:android:password="true" // 以”.”形式显示文本 (2)在代码里设置: 通过设置EditText的setTransformationMethod()方法来实现隐藏密码或这显示密码. editText.setTransformationMethod(PasswordTransformationMethod.getInstance());//设置密码为不可见. 2

android快速开发--常用utils类

1.日志工具类L.java package com.zhy.utils; import android.util.Log; /** * Log统一管理类 * * * */ public class L { private L() { /* cannot be instantiated */ throw new UnsupportedOperationException("cannot be instantiated"); } public static boolean isDebug