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 都支持中文:
Android EditText的常用技巧的更多相关文章
- Android之ListView常用技巧
ListView是一个非常常用的列表控件,虽然在5.x时代ListView的风头正在逐渐的被RecyclerView抢去,但是ListView的使用范围依然十分广泛. 接下来的ListView的常用技 ...
- android 布局优化常用技巧
android对多个模块都要是要的UI逻辑的致辞除了fragment之外,没有别的东西可以支持了, include,merge,viewstub只能支持公用的ui,但是这个通用支持不能包含逻辑(jav ...
- Android Activity 开发常用技巧整理
1.设置 Activity 背景色为透明 在style.xml里面声明: <style name="TranslucentActivityStyle" parent=&quo ...
- Android ListView 常用技巧
Android ListView 常用技巧 Android TextView 常用技巧 1.使用ViewHolder提高效率 ViewHolder模式充分利用了ListView的视图缓存机制,避免了每 ...
- Android ListView 常用技巧总结
本文对 ListView 中的一些常用技巧做一个总结.附:虽然现在 RecyclerView 已逐渐取代 ListView,但实际情况是大部分项目中还在使用 ListView.当然,后续我会在我的博客 ...
- 最强 Android Studio 使用小技巧和快捷键
写在前面 本文翻译自 Android Studio Tips by Philippe Breault,一共收集了62个 Android Studio 使用小技巧和快捷键. 根据这些小技巧的使用场景,本 ...
- AS技巧合集「常用技巧篇」
转载:http://www.apkbus.com/forum.php?mod=viewthread&tid=254723&extra=page%3D2%26filter%3Dautho ...
- (转)Android学习笔记③——常用快捷键
常用快捷键 代码跳转 描述:跳转是为了方便代码位置的定位,存在两种跳转:在定义处可以跳转到调用处,在调用处可以跳转到定义处. 快捷键:Cmd + 鼠标单击 方法间跳转 描述:从一个类方法跳转到临近的一 ...
- Android EditText属性
1.EditText输入的文字为密码形式的设置 (1)通过.xml里设置: 把该EditText设为:android:password="true" // 以”.”形式显示文本 ( ...
随机推荐
- HashMap使用
/* * 测试HashMap的应用,判断 */ import java.util.HashMap; public class HuaWeiTest { private static final Int ...
- make fontconfig 时出现No package ‘libxml-2.0′ found的解决方法
这里显示一个错误信息:checking for LIBXML2… configure: error: Package requirements (libxml-2.0 >= 2.6) were ...
- 信鸽推送.net 服务端代码
//推送代码 private void send() { #region 安卓推送 XingeApp app = new XingeApp("accessId", "se ...
- .net远程连接oracle数据库不用安装oracle客户端的方法
.net远程连接oracle数据库不用安装oracle客户端的方法步骤: 1.添加Sytem.Data.OracleClient命名空间. 2.连接时需要ConnectionString字符串,出现在 ...
- Walkthrough: Creating and Using a Dynamic Link Library (C++)
Original Link: http://msdn.microsoft.com/zh-cn/library/ms235636.aspx Following content is only used ...
- makefile-0711-168 SEVERE ERROR: Input file:
ld: 0711-168 SEVERE ERROR: Input file: /cicm/commlib/include Input files must be regular file ...
- OpenJudge/Poj 1088 滑雪
1.链接地址: bailian.openjudge.cn/practice/1088 http://poj.org/problem?id=1088 2.题目: 总Time Limit: 1000ms ...
- OpenJudge 2754 八皇后
1.链接地址: http://bailian.openjudge.cn/practice/2754 2.题目: 总时间限制: 1000ms 内存限制: 65536kB 描述 会下国际象棋的人都很清楚: ...
- 1.MySQL的安装(linux Ubuntu环境下)
首先先检验一下系统中是否已经安装有mysql: deamon@deamon-H55M-S2:~$ sudo netstat -tap | grep mysql [sudo] password for ...
- php 加密解密方法
<?php//可用于加密解密,如cookie,账号,手机号 as so on class DES { var $key; var $iv; //偏移量 function __construct( ...