首页 > 代码库 > 在EditText中限制输入,自定义样式,监听输入的字符,自动换行
在EditText中限制输入,自定义样式,监听输入的字符,自动换行
自动获取焦点
<!-- 添加:<requestFocus /> 会自动获取焦点 --> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:gravity="center_horizontal" android:hint="自动获取焦点"> <requestFocus /> </EditText>
限制输入的字符
<!-- android:digits="1234567890.+-*/%\n()" 限制输入的字符类型 --> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:hint="只能输入1234567890.+-*/%\n()" android:digits="1234567890.+-*/%\n()" />
设定颜色
<!-- android:textColorHint="#FF0000"设定输入后的文字颜色 --> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="默认显示的字符" android:textColorHint="#FF0000" android:textColor="#00ff00" android:ems="10" />
监听输入的字符
<EditText android:id="@+id/editText_id" android:imeOptions="actionSend" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="实时监听输入的字符" android:ems="10" />
package com.kale.edittext;import android.app.Activity;import android.os.Bundle;import android.text.Editable;import android.text.TextWatcher;import android.view.KeyEvent;import android.view.inputmethod.EditorInfo;import android.widget.EditText;import android.widget.TextView;import android.widget.TextView.OnEditorActionListener;import android.widget.Toast;import com.kale.edittext.R;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); EditText eT = (EditText)findViewById(R.id.editText_id); eT.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO 输入过程中,还在内存里,没到屏幕上 } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO 在输入之前会触发的 } @Override public void afterTextChanged(Editable s) { // TODO 输入完将要显示到屏幕上时会触发 Toast.makeText(MainActivity.this, s.toString(), 0).show(); } }); /*阻止一进入Activity,editText就获得焦点弹出输入法对话框, * 只需要在AndroidManifest.xml相应的activity标签中加入下面这句话即可实现。 android:windowSoftInputMode="stateHidden|adjustResize" <activity android:name=".booking.FlightOrderInfoActivity" android:screenOrientation="portrait" android:label="@string/app_name" android:windowSoftInputMode="stateHidden|adjustResize"/>*/ }}
自定义风格
<EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="自定义风格" android:layout_gravity="center" android:gravity="center" style="@style/my_edittext_style" android:ems="10" />
styles.xml
<!-- 先继承系统的editText风格,自己重写 --> <style name="my_edittext_style" parent="@android:style/Widget.EditText"> <item name="android:background">@drawable/input_box_bg</item> </style>
设定点击效果,点上去后边框变黑。这里没用图片,是自己画的圆角
<EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_margin="20dp" android:layout_height="50dp" android:textColor="#FFFAFA" android:hint="设定点击效果,点上去边框变黑" android:background=<strong>"@drawable/bg_edittext" </strong> android:ems="10" />
bg_edittext_focused.xml
<?xml version="1.0" encoding="utf-8"?><!-- 获得焦点的时候 --><shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#FFFFFF" /> <corners android:radius="3dip"/> <stroke android:width="1dip" android:color="#728ea3" /> </shape>
bg_edittext_normal.xml
<?xml version="1.0" encoding="utf-8"?><!-- 没有被选中的时候的背景图 --><shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#FFFFFF" /> <corners android:radius="3dip"/> <stroke android:width="1dip" android:color="#BDC7D8" /> </shape>
bg_edittext.xml
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_window_focused="false" android:drawable="@drawable/bg_edittext_normal" /> <item android:state_focused="true" android:drawable="@drawable/bg_edittext_focused" /> </selector>
自动换行
<!-- 我们只要确保singleLine为false的话,并且设置宽度一定,就可以自动换行,注意在这里不要设置inputType --> <EditText android:layout_width="400dp" android:layout_height="wrap_content" android:hint="自动换行,有的地方需要用到多行的文本输入框,但EditText在默认的情况下是单选的,且不能进行换行。" android:textSize="30sp" android:singleLine="false" android:ems="10" />
整个的布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <!-- 添加:<requestFocus /> 会自动获取焦点 --> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:gravity="center_horizontal" android:hint="自动获取焦点"> <requestFocus /> </EditText> <!-- android:digits="1234567890.+-*/%\n()" 限制输入的字符类型 --> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:hint="只能输入1234567890.+-*/%\n()" android:digits="1234567890.+-*/%\n()" /> <!-- android:textColorHint="#FF0000"设定输入后的文字颜色 --> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="默认显示的字符" android:textColorHint="#FF0000" android:textColor="#00ff00" android:ems="10" /> <!-- android:phoneNumber="true"被inputType替换了,现在用inputType来限制输入字符的类型 --> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:hint="限制输入的字符类型为numberPassword" android:inputType="numberPassword" /> <EditText android:id="@+id/editText_id" android:imeOptions="actionSend" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="实时监听输入的字符" android:ems="10" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="自定义风格" android:layout_gravity="center" android:gravity="center" style="@style/my_edittext_style" android:ems="10" /> <EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_margin="20dp" android:layout_height="50dp" android:textColor="#FFFAFA" android:hint="设定点击效果,点上去边框变黑" android:background="@drawable/bg_edittext" android:ems="10" /> <!-- 我们只要确保singleLine为false的话,并且设置宽度一定,就可以自动换行,注意在这里不要设置inputType --> <EditText android:layout_width="300dp" android:layout_height="wrap_content" android:hint="自动换行,有的地方需要用到多行的文本输入框,但EditText在默认的情况下是单选的,且不能进行换行。" android:textSize="30sp" android:singleLine="false" android:ems="10" /></LinearLayout>
源码下载:http://download.csdn.net/detail/shark0017/7593127
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。