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的常用技巧的更多相关文章

  1. Android之ListView常用技巧

    ListView是一个非常常用的列表控件,虽然在5.x时代ListView的风头正在逐渐的被RecyclerView抢去,但是ListView的使用范围依然十分广泛. 接下来的ListView的常用技 ...

  2. android 布局优化常用技巧

    android对多个模块都要是要的UI逻辑的致辞除了fragment之外,没有别的东西可以支持了, include,merge,viewstub只能支持公用的ui,但是这个通用支持不能包含逻辑(jav ...

  3. Android Activity 开发常用技巧整理

    1.设置 Activity 背景色为透明 在style.xml里面声明: <style name="TranslucentActivityStyle" parent=&quo ...

  4. Android ListView 常用技巧

    Android ListView 常用技巧 Android TextView 常用技巧 1.使用ViewHolder提高效率 ViewHolder模式充分利用了ListView的视图缓存机制,避免了每 ...

  5. Android ListView 常用技巧总结

    本文对 ListView 中的一些常用技巧做一个总结.附:虽然现在 RecyclerView 已逐渐取代 ListView,但实际情况是大部分项目中还在使用 ListView.当然,后续我会在我的博客 ...

  6. 最强 Android Studio 使用小技巧和快捷键

    写在前面 本文翻译自 Android Studio Tips by Philippe Breault,一共收集了62个 Android Studio 使用小技巧和快捷键. 根据这些小技巧的使用场景,本 ...

  7. AS技巧合集「常用技巧篇」

    转载:http://www.apkbus.com/forum.php?mod=viewthread&tid=254723&extra=page%3D2%26filter%3Dautho ...

  8. (转)Android学习笔记③——常用快捷键

    常用快捷键 代码跳转 描述:跳转是为了方便代码位置的定位,存在两种跳转:在定义处可以跳转到调用处,在调用处可以跳转到定义处. 快捷键:Cmd + 鼠标单击 方法间跳转 描述:从一个类方法跳转到临近的一 ...

  9. Android EditText属性

    1.EditText输入的文字为密码形式的设置 (1)通过.xml里设置: 把该EditText设为:android:password="true" // 以”.”形式显示文本 ( ...

随机推荐

  1. plupload+struts2实现文件上传下载

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8" ...

  2. IOS- 最简单的反向传值- block

    block 常用于反向传值 声明 返回值类型 (^block)(参数列表) 调用 闭包的名字=^(参数列表){}: 闭包的名字(): 如: void(^aaaaa)(int num,NSString ...

  3. 06_init()和destroy()方法

    [工程截图] [HelloWorld.java] package com.HigginCui; public class HelloWorld { public HelloWorld(){ Syste ...

  4. RabbitMQ RPC问题

    1.服务器端代码:https://github.com/rabbitmq/rabbitmq-tutorials/blob/master/python/rpc_server.py 2.客户端代码:htt ...

  5. remastersys修改默认选项

    1.vim /etc/remastersys/isolinux/isolinux.cfg.vesamenu default vesamenu.c32prompt 0timeout 100 menu t ...

  6. WebBench简介

    /** @brief     Web Bench Description* @author  Tang Huaming* @qq        1426213638* @E-mail   xiaoma ...

  7. JS验证邮箱格式是否正确的代码

    验证邮箱格式是否正确的方法有很多,接下来为大家介绍下使用js是如何做到的 复制代码代码如下: /*  *验证邮箱格式是否正确  *参数strEmail,需要验证的邮箱  */ www.jbxue.co ...

  8. PHP学习心得(十)——控制结构

    if 结构是很多语言包括 PHP 在内最重要的特性之一,它允许按照条件执行代码片段. if 语句可以无限层地嵌套在其它 if 语句中,这给程序的不同部分的条件执行提供了充分的弹性. else 延伸了  ...

  9. java项目使用的DBhelper类

    import java.io.*; import java.sql.*; import java.util.*; import javax.servlet.jsp.jstl.sql.*; public ...

  10. Vijos p1165 火烧赤壁 离散化+单调栈

    题目链接:https://vijos.org/p/1165 题意:输入n(n <= 20,000)段线段的端点,问所有线段的长度总和为多少? input: -1 1 5 11 2 9 outpu ...