单行、多行输入框,其属性及功能场景_诗不姓的博客-程序员宅基地_android输入框单行

技术标签: Android控件之EditText  

---单行输入框

editText1.setSingleLine();//控制单行

editText1.setEms(10);//输入框控件本身能显示的字符

editText1.setFilters(new InputFilter[] { new InputFilter.LengthFilter(5) });//用户输入字符长度控制,无所谓汉字、英文字母

----多行输入框

editText1.setMinLines(4);//显示一个4行的输入框

如果xml中配的高度的WRAP_CONTENT,输入超过4行,输入框会自动增加高度,不用滑动就直接能看到所有行的内容。

如果设置了固定高度,只能看到固定高度区域内的内容,滑动看到隐藏的内容。

----设置不可编辑

现在如果有个提交按钮,一按editText1.setEnabled(false);,

EditText不能编辑了,如果固定了高度,又不能滑动,隐藏的内容就看不到了。问题就来了。

那就得换一种不可编辑方式:

editText1.setFocusable(false);
editText1.setFocusableInTouchMode(false);

这种不可编辑,还能滑动。

再次,如果EditText嵌在Listview中,滑动事件冲突,就处理触摸事件

editText1.setOnTouchListener(new OnTouchListener() {

 public boolean onTouch(View view, MotionEvent event) {

editText1.getParent().requestDisallowInterceptTouchEvent(false);

}

}

----输入数字类型控制

EditText为我们提供了android:numeric来控制输入的数字类型,一共有三种分别为integer(正整数)、signed(带符号整数)和decimal(浮点数)。

android:numeric="signed"

下面转自网络--------http://flysnow.iteye.com/blog/828415/

---Enter键图标的设置

软键盘的Enter键默认显示的是“完成”文本,我们知道按Enter建表示前置工作已经准备完毕了,要去什么什么啦。比如,在一个搜索中,我们输入要搜索的文本,然后按Enter表示要去搜索了,但是默认的Enter键显示的是“完成”文本,看着不太合适,不符合搜索的语义,如果能显示“搜索”两个字或者显示一个表示搜索的图标多好。事实证明我们的想法是合理的,Android也为我们提供的这样的功能。通过设置android:imeOptions来改变默认的“完成”文本。这里举几个常用的常量值:

  1. actionUnspecified  未指定,对应常量EditorInfo.IME_ACTION_UNSPECIFIED.效果:
  2. actionNone 没有动作,对应常量EditorInfo.IME_ACTION_NONE 效果:
  3. actionGo 去往,对应常量EditorInfo.IME_ACTION_GO 效果:
  4. actionSearch 搜索,对应常量EditorInfo.IME_ACTION_SEARCH 效果: 
  5. actionSend 发送,对应常量EditorInfo.IME_ACTION_SEND 效果:
  6. actionNext 下一个,对应常量EditorInfo.IME_ACTION_NEXT 效果:
  7. actionDone 完成,对应常量EditorInfo.IME_ACTION_DONE 效果:

 下面已搜索为例,演示一个实例,修改main.xml如下:

Xml代码   收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >  
  7. <EditText  
  8.     android:id="@+id/edit_text"    
  9.     android:layout_width="fill_parent"   
  10.     android:layout_height="wrap_content"  
  11.     android:imeOptions="actionSearch"/>  
  12. </LinearLayout> 
---

EditText的取值、全选、部分选择、获取选中文本

       下面通过一个例子来演示EditText的取值、全选、部分选择和获取选中文本.main.xml修改如下:

Xml代码   收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >  
  7. <EditText  
  8.     android:id="@+id/edit_text"    
  9.     android:layout_width="fill_parent"   
  10.     android:layout_height="wrap_content"  
  11.     android:imeOptions="actionSearch"/>  
  12. <Button   
  13.     android:id="@+id/btn_get_value"  
  14.     android:text="取值"  
  15.     android:layout_width="wrap_content"  
  16.     android:layout_height="wrap_content"/>  
  17. <Button   
  18.     android:id="@+id/btn_all"  
  19.     android:text="全选"  
  20.     android:layout_width="wrap_content"  
  21.     android:layout_height="wrap_content"/>  
  22. <Button   
  23.     android:id="@+id/btn_select"  
  24.     android:text="从第2个字符开始选择"  
  25.     android:layout_width="wrap_content"  
  26.     android:layout_height="wrap_content"/>  
  27. <Button   
  28.     android:id="@+id/btn_get_select"  
  29.     android:text="获取选中文本"  
  30.     android:layout_width="wrap_content"  
  31.     android:layout_height="wrap_content"/>  
  32. </LinearLayout>  
 

HelloEditText修改如下:

Java代码   收藏代码
  1. package com.flysnow;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.text.Editable;  
  6. import android.text.Selection;  
  7. import android.view.KeyEvent;  
  8. import android.view.View;  
  9. import android.view.View.OnClickListener;  
  10. import android.widget.Button;  
  11. import android.widget.EditText;  
  12. import android.widget.TextView;  
  13. import android.widget.Toast;  
  14. import android.widget.TextView.OnEditorActionListener;  
  15. /** 
  16.  * EditText演示 
  17.  * @author 飞雪无情 
  18.  * @since 2010-11-29 
  19.  */  
  20. public class HelloEditText extends Activity {  
  21.     /** Called when the activity is first created. */  
  22.     @Override  
  23.     public void onCreate(Bundle savedInstanceState) {  
  24.         super.onCreate(savedInstanceState);  
  25.         setContentView(R.layout.main);  
  26.         final EditText editText=(EditText)findViewById(R.id.edit_text);  
  27.         //监听回车键  
  28.         editText.setOnEditorActionListener(new OnEditorActionListener() {  
  29.             @Override  
  30.             public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {  
  31.                 Toast.makeText(HelloEditText.this, String.valueOf(actionId), Toast.LENGTH_SHORT).show();  
  32.                 return false;  
  33.             }  
  34.         });  
  35.         //获取EditText文本  
  36.         Button getValue=(Button)findViewById(R.id.btn_get_value);  
  37.         getValue.setOnClickListener(new OnClickListener() {  
  38.             @Override  
  39.             public void onClick(View v) {  
  40.                 Toast.makeText(HelloEditText.this, editText.getText().toString(), Toast.LENGTH_SHORT).show();  
  41.             }  
  42.         });  
  43.         //让EditText全选  
  44.         Button all=(Button)findViewById(R.id.btn_all);  
  45.         all.setOnClickListener(new OnClickListener() {  
  46.             @Override  
  47.             public void onClick(View v) {  
  48.                 editText.selectAll();  
  49.             }  
  50.         });  
  51.         //从第2个字符开始选择EditText文本  
  52.         Button select=(Button)findViewById(R.id.btn_select);  
  53.         select.setOnClickListener(new OnClickListener() {  
  54.             @Override  
  55.             public void onClick(View v) {  
  56.                 Editable editable=editText.getText();  
  57.                 Selection.setSelection(editable, 1,editable.length());  
  58.             }  
  59.         });  
  60.       //获取选中的文本  
  61.         Button getSelect=(Button)findViewById(R.id.btn_get_select);  
  62.         getSelect.setOnClickListener(new OnClickListener() {  
  63.             @Override  
  64.             public void onClick(View v) {  
  65.                 int start=editText.getSelectionStart();  
  66.                 int end=editText.getSelectionEnd();  
  67.                 CharSequence selectText=editText.getText().subSequence(start, end);  
  68.                 Toast.makeText(HelloEditText.this, selectText, Toast.LENGTH_SHORT).show();  
  69.             }  
  70.         });  
  71.     }  
  72.     /** 
  73.      * 交换两个索引 
  74.      * @param start 开始索引 
  75.      * @param end 结束索引 
  76.      */  
  77.     protected void switchIndex(int start, int end) {  
  78.         int temp=start;  
  79.         start=end;  
  80.         end=temp;  
  81.     }  
  82. }  
 

 运行效果如下:



 可以通过输入文字和点击下面的按钮测试。


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u011309801/article/details/39693437

智能推荐

《Unity3D网络游戏实战》第2章_yxqq378287007的博客-程序员宅基地

《Unity3D网络游戏实战》第2章异步代码异步客户端异步代码Async.csusing System;using System.Threading;namespace Async { class MainClass { public static void Main (string[] args) { Timer timer = new Timer(Timeout, null, 2000, 0); Thread.Sleep(2000*2); Console.WriteL

安装系统_iefanrui的博客-程序员宅基地

第一步、准备工作    安装系统前要做一些准备工作,首先是制作你要安装的系统的系统镜像。制作系统镜像要先下载一个UltraISO软件。然后右键点击选择“以管理员的身份运行”(注意:必须这样做)。打开后点击左上角的“文件”-—“打开”,找到存放系统镜像的目录,选中系统镜像,然后点击“打开”。然后点击 “启动”—“开始硬盘录入”,然后选择一个U盘作为系统启动盘(注意:这个U盘必须足够大,一般16G的就...

pv3d 的 Camera3D练习_suzhou_boy1的博客-程序员宅基地

 http://www.sandy1219.com/3d/test2/testflabcamera.html  package{ import flab3d.FlabCamera3D; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.Stage

CAsyncSocket::Send()、OnSend()_hahahapeige的博客-程序员宅基地

virtual int Send( const void* lpBuf, int nBufLen, int nFlags = 0);Dialog中Socket设置AsyncSelect(FD_WRITE),触发虚函数OnSend(),之后调用Send()发送消息。参数lpBuf包含要传输的数据的缓冲区。nBufLen中的数据的长度lpBuf以字节为单位。nFlags...

怎么学python-新手如何自学python课程?_weixin_37988176的博客-程序员宅基地

为了Python的自学党们,传智播客真的是拼了,今天给大家讲讲新手如何自学python课程?传智播客不仅有“人工智能+Python学习路线图”,还根据以往的经验,总结出学习Python之前的各种问题,想详细了解,从此贴开始吧!!!想学Python就已经迈出了通向成功的第一步,想要通过自学成才的话,是需要很大的毅力和吃苦精神,切忌三天打鱼两天晒网。建议通过我们传智黑马论坛的python相关帖子来一步...

利用compositionstart/end事件监听输入法事件_青山院长白菜的博客-程序员宅基地_compositionstart

var flag = false;document.querySelector('input').oninput = function() { setTimeout(() =&amp;gt; { if (!flag) console.log(this.value); }, 0);};document.querySelector('input').onkeyup = function(...

随便推点

交换排序_hailushijie的博客-程序员宅基地

/** * 从0位置开始,依次和后面所有元素进行比较,并将小数交换到前面。 * o(N*N) * @author *冒泡排序,选择排序,插入排序,交换排序属于简单排序方法 */public class ExchangeSort { private static int[] array = new int[]{1,8,2,9,3,7,11,23,90,4,5}; public sta

day03-分支结构switch语句、循环语句、Random随机数_BY_WJL的博客-程序员宅基地

1. switch语句1.1 分支语句switch语句格式switch (表达式) { case 1: 语句体1; break; case 2: 语句体2; break; ... default: 语句体n+1; break;}执行流程:首先计算出表达式的值其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结 束。最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结

平面物理引擎(我们的星星)1.0--效果_断水客的博客-程序员宅基地

作为这个系列的补充篇(放在1.1之前的1.0),我们不看代码,先看看这个星星类的使用效果,看看我们的星星的表现。

数据库之联合查询_Echo佩雨的博客-程序员宅基地_数据库联合

数据库之联合查询联合查询: 将多次查询(多条select语句),在记录上进行拼接(字段不会增加)基本语法多条select语句构成: 每一条select语句获取的字段数必须严格一致(但是字段类型无关)select 语句1unionselect 语句2Union选项 : 与select选项一样有两个All:保留全部(不管重复)Distinct:去重(整个重复):默认的mysq...

常用html、CSS、javascript前端命名规范_weixin_33834910的博客-程序员宅基地

无意发现自己文件夹里面有这么一个文件,具体从哪里来的不记得了,仔细看下,发现总结的挺好的,贴出来分享一下。无论是从技术角度还是开发视角,对于web前端开发规范文档都有一定规范,本文就css3和html5的发展前景总结了一系列的web开发文档,仅供大家参考。规范目的:为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档...

python接口自动化测试 unittest框架官网学习_一碗烈酒的博客-程序员宅基地

接口自动化: +, 接口session使用,关联 import unittest import warnings import requests class TestShop(unittest.TestCase): def setUp(self): # 初始化实例化session对象 ...