android:EditText控件imeOptions属性

el/2024/7/17 21:44:45

1、输入法Enter键图标的设置:

软件盘的界面替换只有一个属性android:imeOptions,这个属性的可以取的值有normal,actionUnspecified,actionNone,actionGo,actionSearch,actionSend,actionNext,actionDone例如当值为actionNext时enter键外观变成一个向下箭头,而值为actionDone时enter键外观则变成了“完成”两个字。 
我们也可以重写enter的事件

 

软键盘的Enter键默认显示的是“完成”文本,通过设置android:imeOptions来改变默认的“完成”文本。这里举几个常用的常量值:

actionUnspecified  未指定,对应常量EditorInfo.IME_ACTION_UNSPECIFIED.  
actionNone 没有动作,对应常量EditorInfo.IME_ACTION_NONE 
actionGo 去往,对应常量EditorInfo.IME_ACTION_GO
actionSearch 搜索,对应常量EditorInfo.IME_ACTION_SEARCH    
actionSend 发送,对应常量EditorInfo.IME_ACTION_SEND   
actionNext 下一个,对应常量EditorInfo.IME_ACTION_NEXT   
actionDone 完成,对应常量EditorInfo.IME_ACTION_DONE  

 

(EditorInfo.inputType & EditorInfo.TYPE_CLASS_MASK)可以是许多不同的值,包括: 
TYPE_CLASS_NUMBER 
TYPE_CLASS_DATETIME 
TYPE_CLASS_PHONE 
TYPE_CLASS_TEXT

 

2、事件捕捉处理:

可以通过setOnEditorActionListener设置事件处理。

复制代码
final EditText input = new EditText(this);   
input.setSingleLine(true); //android:singleLine=”true”  
input.setImeOptions(EditorInfo.IME_ACTION_SEND);  
input.setInputType(InputType.TYPE_CLASS_TEXT |InputType.TYPE_TEXT_VARIATION_PASSWORD);  
input.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
 
   
   public boolean onEditorAction(TextView v, int actionId, KeyEvent event)  {    Log.d(TAG, ""+actionId+","+event);  if (actionId==EditorInfo.IME_ACTION_SEND||
          (event!=null&&event.getKeyCode()== KeyEvent.KEYCODE_ENTER)) {    //do something;  return true;  }    return false;    }    }); 
复制代码

 

3、editor密码隐藏,怎么写?

有2种方法处理:

代码方法:input.setInputType(InputType.TYPE_CLASS_TEXT |InputType.TYPE_TEXT_VARIATION_PASSWORD);

layout配置方法:android:inputType="textPassword"

 

4、activity加载完成后,edit输入框会自动弹出输入法,可以通过以下代码屏蔽:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

5、设置EditText始终不弹出软件键盘 
例:EditText edit=(EditText)findViewById(R.id.edit); 
       edit.setInputType(InputType.TYPE_NULL);

 

6、让 EditText失去焦点,使用EditText的clearFocus方法 
例如:EditText edit=(EditText)findViewById(R.id.edit); 
           edit.clearFocus();

 

7、EditText默认不弹出软件键盘

在 AndroidMainfest.xml中选择activity,设置windowSoftInputMode属性为 adjustUnspecified|stateHidden

复制代码
< activity android:name=".Main"android:label="@string/app_name"android:windowSoftInputMode="adjustUnspecified|stateHidden"android:configChanges="orientation|keyboardHidden">
     < intent-filter>
         < action android:name="android.intent.action.MAIN" />
         < category android:name="android.intent.category.LAUNCHER" />
      < /intent-filter>
< /activity>
复制代码

 

8、设置光标到指定位置

EditText et = (EditText) findViewById(R.id.etTest);
et.setSelection(2);
//设置光标不显示,但不能设置光标颜色
et.setCursorVisible(false);

//获得焦点时全选文本
et.setSelectAllOnFocus(true);

et.requestFocus(); //请求获取焦点
et.clearFocus(); //清除焦点

使用EditText的setError提示
et.setError("邮箱"); 
  

自定义图标的setError提示
Drawable dr = getResources().getDrawable(R.drawable.ic_launcher);
dr.setBounds(0, 0, 10, 10); //必须设置大小,否则不显示
et.setError("有错误提示", dr);
 

et.setInputType(InputType.TYPE_CLASS_PHONE);//只能输入电话号码
et.setInputType(InputType.TYPE_CLASS_NUMBER);
//只能输入数字
et.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);//只能输入邮箱地址
et.setInputType(InputType.TYPE_NULL); // 禁止输入(不弹出输入法)

XML实现案例
<EditText android:id="@+id/etTest" android:inputType="number"android:layout_width="wrap_content" android:layout_height="wrap_content"/>
 

 

8、EditText相关属性

EditText继承关系:View-->TextView-->EditText。 
EditText的属性很多,这里介绍几个: 
android:layout_gravity="center_vertical" 
设置控件显示的位置:默认 top,这里居中显示,还有bottom 
android:hint="请输入数字!" 
设置显示在空间上的提示信息 
android:numeric="integer" 
设置只能输入整数,如果是小数则是:decimal 
android:singleLine="true" 
设置单行输入,一旦设置为true,则文字不会自动换行。 
android:password="true" 
设置只能输入密码 
android:textColor = "#ff8c00" 
字体颜色 
android:textStyle="bold" 
字体,bold, italic, bolditalic 
android:textSize="20dip" 
大小 
android:capitalize = "characters" 
以大写字母写 
android:textAlign="center" 
EditText没有这个属性,但TextView有,居中 
android:textColorHighlight="#cccccc" 
被选中文字的底色,默认为蓝色 
android:textColorHint="#ffff00" 
设置提示信息文字的颜色,默认为灰色 
android:textScaleX="1.5" 
控制字与字之间的间距 
android:typeface="monospace" 
字型,normal, sans, serif, monospace 
android:background="@null" 
空间背景,这里没有,指透明 
android:layout_weight="1" 
权重,控制控件之间的地位,在控制控件显示的大小时蛮有用的。 
android:textAppearance="?android:attr/textAppearanceLargeInverse"

---------------------------------------------------------------------------------------

默认情况下软键盘右下角的按钮为“下一个”,点击会到下一个输入框,保持软键盘

设置 android:imeOptions="actionDone" ,软键盘下方变成“完成”,点击后光标保持在原来的输入框上,并且软键盘关闭

android:imeOptions="actionSend" 软键盘下方变成“发送”,点击后光标移动下一个
在这里设置的imeOptions如何使用呢?如下面的代码,让EditText实现 setOnEditorActionListener在onEditAction方法中actionId就对应我们设置的imeOptions。系统默认的actionId有:EditorInfo.IME_NULL、EditorInfo.IME_ACTION_SEND、EditorInfo.IME_ACTION_DONE等。这样我们就可以根据不同的EditText来实现不同的软键盘右下角功能键。
复制代码
public class IMFActivity extends Activity implements OnEditorActionListener {    
   EditText etDefault;  EditText etEmail;  EditText etNumber;  /** Called when the activity is first created. */  @Override  public void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.imf_layout);  etDefault = (EditText)findViewById(R.id.default_content);  etEmail = (EditText)findViewById(R.id.email_content);  etNumber = (EditText)findViewById(R.id.number_content);  etDefault.setOnEditorActionListener(this);  etEmail.setOnEditorActionListener(this);  etNumber.setOnEditorActionListener(this);          }  @Override  public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {  switch(actionId){  case EditorInfo.IME_NULL:  System.out.println("null for default_content: " + v.getText() );  break;  case EditorInfo.IME_ACTION_SEND:  System.out.println("action send for email_content: "  + v.getText());  break;  case EditorInfo.IME_ACTION_DONE:  System.out.println("action done for number_content: "  + v.getText());  break;  }  //Toast.makeText(this, v.getText()+"--" + actionId, Toast.LENGTH_LONG).show();  
        return true;  }  
}  
复制代码
复制代码
<?xml version="1.0" encoding="utf-8"?>  
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="fill_parent" android:layout_height="fill_parent">  <TableLayout android:layout_width="fill_parent"  android:layout_height="fill_parent">  <TableRow>  <EditText android:text="1111111111111" android:id="@+id/default_content"  android:layout_width="fill_parent" android:layout_height="wrap_content"></EditText>  </TableRow>  <TableRow>  <EditText android:text="" android:id="@+id/email_content"  android:layout_width="fill_parent" android:layout_height="wrap_content"  android:inputType="text|textEmailAddress"  android:imeOptions="actionSend"></EditText>  </TableRow>  <TableRow>  <EditText android:text="" android:id="@+id/number_content"  android:layout_width="fill_parent" android:layout_height="wrap_content"  android:inputType="number|numberSigned|numberDecimal"  android:imeOptions="actionDone"></EditText>  </TableRow>  </TableLayout>  
</ScrollView>  
复制代码

http://www.ngui.cc/el/5557155.html

相关文章

Java 格式化(数字和字符串)

格式化日期&#xff1a; SimpleDateFormat sdf new SimpleDateFormat("yyyyMMddHHmmss"); String datesdf.format(new Date()); 对日期进行格式化&#xff0c;输入类型为20160512135506 //处理goodsPrice小数点的位数问题 &#xff0c;保留两位小数 Double good…

android开发过程中的log日志管理

在开发中经常要打印log&#xff0c;但是在我们发布项目的时候是不能打印。为了方便操作log我们需要自己定义个log类然后在开发阶段将下面LOG_LEVEL设置为6这样所有的log都能显示&#xff0c;在发布的时候我们将LOG_LEVEL 设置为0.这样log就非常方便管理了。public class Logger…

Django设置后台中文面板

Django设置后台中文面板&#xff0c;修改settings.py文件&#xff0c;只需要修改两行&#xff1a; LANGUAGE_CODE ‘zh-CN’ TIME_ZONE ‘Asia/Shanghai’这样打开后台的时候便是中文面板了&#xff0c;灰常简单。当然除了这种方法之外&#xff0c;还有另一种方法&#xff0…

centos7 安装rsyslog

升级安装rsyslog 访问 http://rpms.adiscon.com. 下载 rsyslogall.repo 文件到下面的目录&#xff08;也可以新建rsyslog.repo文件&#xff0c;把内容粘贴到文件中&#xff09; /etc/yum.repos.d/ 执行下面命令 yum install rsyslog --------------------------------------…

django用jquery的ajax提交表单,中间件的CsrfViewMiddleware问题

首先要引入jquery文件。 <script src{% static jquery/jquery.min.js %}></script> 注意这句是要添加到自己写的jquery脚本前边。 然后写一个简单的表单 <form method"post" id"formadd">{% csrf_token %}<label for"id_name&…

在Python中调用shell命令及 获取python命令中的参数

Python 调用shell脚本&#xff0c; Python 自定义函数&#xff0c; Python 调用shell命令其中命令参数为python脚本中的变量 举例&#xff1a; shell的脚本&#xff1a; t.sh内容&#xff1a; echo "this is a test shell with arguments" echo "arg1 $1; arg2…

Django配置Session的3种存储方法

在Django中Session是通过一个中间件管理的。如果要在应用程序中使用Session&#xff0c;需要在settings.py中的MIDDLEWARE_CLASSES变量中加入’django.contrib.sessions.middleware.SessionMiddleware’。 Django中的Session有3种存储方式&#xff1a;放在数据库、缓存或者文件…

Django session 详解

Django中的session是一个高级工具&#xff0c;它可以让用户存储个人信息以便在下次访问网站中使用这些信息。session的基础还是cookie&#xff0c;但是它提供了一些更加高级的功能。请看下面的一个例子&#xff1a; 使用session&#xff1a; 这个例子中实现了一个简单的计数功…

python的os模块fork、wait、system、exec、popen、exit函数讲解

虽然进程可在单独的内存空间中执行&#xff0c;但除非这些Python进程在单独的处理器上执行&#xff0c;否则&#xff0c;实际并不是“同时”运行的。是由操作系统把处理器的时间片分配给一个进程&#xff0c;用完 时间片 后就需退出处理器等待另一个时间片的到来。 另一种方式…

Python:OS 模块 -- 进程管理

原文链接&#xff1a;http://www.cnblogs.com/now-fighting/p/3534847.html 建议查看原作者原文。 这里我们介绍os模块中的进程管理相关的操作。 os模块提供给了我们访问操作系统功能的接口&#xff0c;我们可以通过os模块提供给我们的进程管理接口&#xff0c;编写多进程程…