博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android--UI之EditText
阅读量:5745 次
发布时间:2019-06-18

本文共 5065 字,大约阅读时间需要 16 分钟。

前言

  上一篇博客介绍了Android的TextView控件,这篇博客来说一下EditText控件。EditText为一个文本控件,提供了文本输入的功能,而且继承自TextView,可以理解为可以输入的TextView。因为继承的关系,很多TextView可以用到的方法,在EditText都可以用到。

EditText

  对于EditText,在很多平台上都有用到,最大的用处就是供用户输入一些信息,所以主要的方法就两个:

  • setText():设置TextView控件中显示的内容。
  • getText() 获取TextView控件中显示的内容。

示例程序

  现在通过两个示例程序,来讲解一下EditText的使用。

  第一个例子,在EditText中插入表情图片,无论是开发任何系统,这个都是常用的实现。在编码之前,需要找到一些表情图片的资源,我这里就随机找了十张图片,注意资源文件的文件名必须是小写的,放在/res/drawable文件夹下。这样在清单文件R中,就可以看到与Drawable资源对于的资源清单ID,对于在清单文件中的资源,可以通过R类访问,但是访问到的为一个int类型的资源ID,如果需要访问详细内容,需要使用getResource()方法访问到所有的资源,在其中有特定资源的访问方法。关于资源清单文件R,以后再进行详细讲解。

  在Android中,使用图片资源会用到一个Bitmap的类,此类代表一个位图资源,是一个final类,需要使用BitmapFactory类的静态方法decodeXxx()转化获得,此静态方法有多种重载模式,可以适应不同的资源来源。

  下面直接上代码,对于布局而言,很简单的只有两个控件:

1 
2
6 7
12 13
18

  实现InImageActivity.java代码:

1 package cn.bgxt.androiduiedittext; 2  3 import java.util.Random; 4  5 import android.app.Activity; 6 import android.graphics.Bitmap; 7 import android.graphics.BitmapFactory; 8 import android.graphics.drawable.Drawable; 9 import android.os.Bundle;10 import android.text.Spannable;11 import android.text.SpannableString;12 import android.text.style.ImageSpan;13 import android.view.View;14 import android.widget.Button;15 import android.widget.EditText;16 17 public class InImageActivity extends Activity  {18 19     private Button btnInImg;20     private EditText edImage;21     //获取Drawable资源的Id数组22     private final int[] DRAW_IMG_ID=23         {24             R.drawable.image0,25             R.drawable.image1,26             R.drawable.image2,27             R.drawable.image3,28             R.drawable.image4,29             R.drawable.image5,30             R.drawable.image6,31             R.drawable.image7,32             R.drawable.image8,33             R.drawable.image934         };    35     public InImageActivity() {36         // TODO Auto-generated constructor stub37     }38 39     @Override40     protected void onCreate(Bundle savedInstanceState) {41         super.onCreate(savedInstanceState);42         setContentView(R.layout.edittextinimg_activity);43         44         btnInImg=(Button)findViewById(R.id.btnInImg);45         edImage=(EditText)findViewById(R.id.edImage);46         47         btnInImg.setOnClickListener(new View.OnClickListener() {            48             @Override49             public void onClick(View v) {50                 // 参数一个0-9的随机数51                 int  random=new Random().nextInt(9);52                 //通过bitmapFactory获得位图资源53                 Bitmap bit=BitmapFactory.decodeResource(getResources(), DRAW_IMG_ID[random]);54                 //一个ImageSpan,用于插入的存放待插入的图片55                 ImageSpan imageSpan=new ImageSpan(InImageActivity.this,bit);56                 SpannableString spannableString=new SpannableString("img");57                 spannableString.setSpan(imageSpan, 0, 3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);58                 edImage.append(spannableString);59             }60         });61         62     }63 64     65     66     67 }

  显示效果,点击按钮随机添加标签:

  

  既然EditText主要是用来获取用户输入的信息的,那么第二个例子就来讲讲用户输入时候内容的验证吧。在XML Attribute中,有一些属性可以设置输入验证的范围内容,不过此为TextView类的属性,因为TextView无法输入,此处在EditText中讲解说明。

  • android:digits:指定特定能被输入的字符。
  • android:inputType:设定输入的类型,下面仅介绍一些常用的,多项可以使用“|”分割。
    • textUri:必须是一个URL。
    • textEmailAddress:Email地址
    • textPassword:密码。
    • number:数字。
  • android:numeric:指定数字输入类型,多项可以使用“|”分割。
    • integer:数字。
    • decimal:浮点类型。
    • signed:带符号。

  以上属性仅仅是为了限制用户的输入,还有一些输入需要给用户以提示错误信息。这里将使用到setError()方法,如果设定了错误提示信息,会在EditText旁边以感叹号的形式显示。

  布局代码:

1 
2
6 7
11 12
19
23 24
30
34 35
41
46

  Java代码: 

1 package cn.bgxt.androiduiedittext; 2  3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.View; 6 import android.widget.Button; 7 import android.widget.EditText; 8  9 public class EditValidationActivity extends Activity {10 11     private Button btnValidation;12     private EditText etNum;13     public EditValidationActivity() {14         // TODO Auto-generated constructor stub15     }16     @Override17     protected void onCreate(Bundle savedInstanceState) {18         // TODO Auto-generated method stub19         super.onCreate(savedInstanceState);20         setContentView(R.layout.editvalidation_activity);21         btnValidation=(Button)findViewById(R.id.btnValidation);22         etNum=(EditText)findViewById(R.id.etNum);        23         24         btnValidation.setOnClickListener(new View.OnClickListener() {25             26             @Override27             public void onClick(View v) {28                 // TODO Auto-generated method stub29                 String num=etNum.getText().toString().trim();30                 if(!num.equals("123"))31                 {32                     etNum.setError("请输入123");33                 }34             }35         });36         37         38     }39 }

  效果展示:

  如果点击验证按钮,而第一个文本框输入的不是123,则提示错误信息:

  

总结

  以上就讲解了EditText在实际项目中常用的效果,虽然大部分使用的是TextView的属性设置的效果,但是Android下还有一些其他的供用户输入的控件,可以使用,所以才以这样的继承结构实现属性。

  请支持原创,尊重原创,转载请注明出处。谢谢。

 

你可能感兴趣的文章
Rust 2018 即将到来:设法从 Rust 2015 过渡
查看>>
一张图道尽程序员的出路
查看>>
Android 开发应该掌握的 Proguard 技巧
查看>>
是时候放弃 Spark Streaming, 转向 Structured Streaming 了 ...
查看>>
企业级 Spring Boot 教程 (十七)上传文件
查看>>
sqli-labs 下载、安装
查看>>
RouteReuseStrategy angular路由复用策略详解,深度刨析路由复用策略
查看>>
Kubernetes API 分析 ( Kube-apiserver )
查看>>
4-学会刷Wi-Fi模块固件(刷AT指令固件)
查看>>
ASP.NET Core 2 学习笔记(五)静态文件
查看>>
Button 使用Command 按钮置灰未更新
查看>>
PostgreSQL控制台以竖行显示
查看>>
CSS-Flex 布局教程:实例篇
查看>>
Java和移动端交互
查看>>
Java SSM 客户管理 商户 管理系统 库存管理 销售报表 项目源码
查看>>
排序优化——如何实现一个通用的、高性能的排序函数
查看>>
IDEA中css文件包红色下划线
查看>>
js中bind、call、apply函数的用法
查看>>
OC高效率52之多用GCD,少用performSelector系列方法
查看>>
sqoop导入关系型数据库-解密Sqoop
查看>>