EditText方法简单实用
2016-12-22 14:56
190 查看
1. //编辑框每次选择都全部选中
android:selectAllOnFocus="true"//设置属性,当获取焦点时全部选中
编辑框的点击监听中添加
info_text.setText(info_text.getText().toString());//添加这句后实现效果
info_text.selectAll();
2. android:inputType="numberDecimal"//设置只能输入数字且不能输入负数
3. //点击EditText阻止键盘弹出
public voidsetEditTextNoInputMethod(EditText editText) {
InputMethodManager imm =(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(),0);
editText.setInputType(0);
}
4. khEdittext.setSelection(khEdittext.getText().toString().length());//设置输入位置在末尾
5.j进入界面默认不弹出输入框<activity
android:name="com.zy.liansuo.activity.xp.Activity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" >//默认不弹出输入框
</activity>
6.软键盘不遮盖输入框:
可以通过在清单文件中Activity注册时使用windowSoftInputMode属性
在默认情况下会遮住输入框此时的属性值是:stateUnspecified
不指定软键盘的状态(隐藏还是可见)。将由系统选择合适的状态,或依赖主题中的设置。这是对软键盘行为的默认设置。
不会遮住
设置属性值:adjustResize
始终调整Activity主窗口的尺寸来为屏幕上的团键盘腾出空间。
设置属性值:adjustPan
不调整Activity主窗口的尺寸来为软件盘腾出空间,而是自动平移窗口的内容,是当前焦点永远不被键盘遮盖,让用户始终看到输入内容。这通常不如尺寸调整可取,因为用户可能需要关闭软件盘以达到被遮盖的窗口部分或与这些部分进行交互。
· adjustResize失效情况:activity
设置了全屏属性指Theme.Light.NotittleBar.Fullscreen
或者设置了 activity
对应的主题中 android:windowTranslucentStatus
属性,设置方式为:android:windowTranslucentStatus=true,这时如果对应的页面上含有输入框,将会导致点击输入框时软键盘弹出后键盘覆盖输入框,导致输入框看不见。
fitsSystemWindows=”true”,只有初始的view起作用:如果在布局中不是最外层控件设置fitsSystemWindows=”true”,
那么设置的那个控件高度会多出一个状态栏高度。若有多个view设置了,因第一个view已经消耗掉insect,其他 view 设置了也会被系统忽略
参考:https://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650239474&idx=1&sn=8b4f1ef4e60942e58912c4b31e3dff49&chksm=8863809dbf14098b02b05aae764e8c5aec72122d5156407d8930b2feff58b369877772b1cfb9&mpshare=1&scene=23&srcid=05183OOO42N2cJZvGMJ9qQJM#rd
7.输入长度限制
android:maxLength="2"
8.两行限制:
android:maxLines="2"
android:ellipsize="end"
9.单行显示
android:singleLine="true"/./单行显示
ndroid:ellipsize="end"当限定试显示行数时省略多余文字的位置,是省略号在开头还是结尾。
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
if(",".equals(source)){
return ",";
}
return source;
}
}});
filter就是过滤器,对于EditText我们可以限制输入内容或者说制定输入规则,若我们在布局中限制了字符长度,而在代码中有添加了filter限制,则长度设置就没有效果了,此时我们必须在filter上做上长度限制才可以。
setFilter设置的是filter数组,即可以设置多个规则,我们可以定义一个类实现InputFilter重写 filter方法,在其中写规则。
filter方法中参数意义
source新输入的字符串
start新输入的字符串起始下标,一般为0
end新输入的字符串终点下标,一般为source长度-1
dest输入之前文本框内容
dstart原内容起始坐标,一般为0
dend原内容终点坐标,一般为dest长度-1
限制长度的方法
setFilters(new InputFilter[]{new InputFilter.LengthFilter(10)});
11.只能输入中文,通过Edittext的digits属性控制输入内容
在string.xml添加:
<string name="cesh">0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.@,~-:*?!_#/=+&^;{}|\""'\'<\%[]
\>()$\"</string>这个基本包含了所有的非中文字符
其中
"
(" 或 ")
' (' 或 ')
& (& 或 &)
< (< 或 <)
> (> 或 >)
然后对控件设置digits属性
<EditText
android:id="@+id/myspinner_showdata"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:gravity="center_vertical"
android:paddingLeft="5dp"
android:paddingRight="65dp"
android:background="@drawable/biankuang"
android:digits="@string/cesh"
android:text="" />
就可以了
12.两个编辑框之间相互影响修改
借鉴网络上的方法,这个需要熟悉编辑框的回调的三个方法的执行顺序,还有监听的移除监听的使用
edit_two = (EditText) findViewById(R.id.edit_two);
edit_one = (EditText) findViewById(R.id.edit_one);
edit_one.setText("你好");
edit_two.setText("测率");
one = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
edit_two.removeTextChangedListener(two);
edit_two.setText(s.toString());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
edit_two.addTextChangedListener(two);
}
};
two = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
edit_one.removeTextChangedListener(one);
edit_one.setText(s.toString());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
edit_one.addTextChangedListener(one);
}
};
edit_two.addTextChangedListener(two);
edit_one.addTextChangedListener(one);
android:selectAllOnFocus="true"//设置属性,当获取焦点时全部选中
编辑框的点击监听中添加
info_text.setText(info_text.getText().toString());//添加这句后实现效果
info_text.selectAll();
2. android:inputType="numberDecimal"//设置只能输入数字且不能输入负数
3. //点击EditText阻止键盘弹出
public voidsetEditTextNoInputMethod(EditText editText) {
InputMethodManager imm =(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(),0);
editText.setInputType(0);
}
4. khEdittext.setSelection(khEdittext.getText().toString().length());//设置输入位置在末尾
5.j进入界面默认不弹出输入框<activity
android:name="com.zy.liansuo.activity.xp.Activity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" >//默认不弹出输入框
</activity>
6.软键盘不遮盖输入框:
可以通过在清单文件中Activity注册时使用windowSoftInputMode属性
在默认情况下会遮住输入框此时的属性值是:stateUnspecified
不指定软键盘的状态(隐藏还是可见)。将由系统选择合适的状态,或依赖主题中的设置。这是对软键盘行为的默认设置。
不会遮住
设置属性值:adjustResize
始终调整Activity主窗口的尺寸来为屏幕上的团键盘腾出空间。
设置属性值:adjustPan
不调整Activity主窗口的尺寸来为软件盘腾出空间,而是自动平移窗口的内容,是当前焦点永远不被键盘遮盖,让用户始终看到输入内容。这通常不如尺寸调整可取,因为用户可能需要关闭软件盘以达到被遮盖的窗口部分或与这些部分进行交互。
· adjustResize失效情况:activity
设置了全屏属性指Theme.Light.NotittleBar.Fullscreen
或者设置了 activity
对应的主题中 android:windowTranslucentStatus
属性,设置方式为:android:windowTranslucentStatus=true,这时如果对应的页面上含有输入框,将会导致点击输入框时软键盘弹出后键盘覆盖输入框,导致输入框看不见。
fitsSystemWindows=”true”,只有初始的view起作用:如果在布局中不是最外层控件设置fitsSystemWindows=”true”,
那么设置的那个控件高度会多出一个状态栏高度。若有多个view设置了,因第一个view已经消耗掉insect,其他 view 设置了也会被系统忽略
参考:https://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650239474&idx=1&sn=8b4f1ef4e60942e58912c4b31e3dff49&chksm=8863809dbf14098b02b05aae764e8c5aec72122d5156407d8930b2feff58b369877772b1cfb9&mpshare=1&scene=23&srcid=05183OOO42N2cJZvGMJ9qQJM#rd
7.输入长度限制
android:maxLength="2"
8.两行限制:
android:maxLines="2"
android:ellipsize="end"
9.单行显示
android:singleLine="true"/./单行显示
ndroid:ellipsize="end"当限定试显示行数时省略多余文字的位置,是省略号在开头还是结尾。
10.控制输入内容:不可输入“,”中文逗号
myspinner_showdata.setFilters(new InputFilter[] { new InputFilter() {
@Override
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
if(",".equals(source)){
return ",";
}
return source;
}
}});
filter就是过滤器,对于EditText我们可以限制输入内容或者说制定输入规则,若我们在布局中限制了字符长度,而在代码中有添加了filter限制,则长度设置就没有效果了,此时我们必须在filter上做上长度限制才可以。
setFilter设置的是filter数组,即可以设置多个规则,我们可以定义一个类实现InputFilter重写 filter方法,在其中写规则。
filter方法中参数意义
source新输入的字符串
start新输入的字符串起始下标,一般为0
end新输入的字符串终点下标,一般为source长度-1
dest输入之前文本框内容
dstart原内容起始坐标,一般为0
dend原内容终点坐标,一般为dest长度-1
限制长度的方法
setFilters(new InputFilter[]{new InputFilter.LengthFilter(10)});
11.只能输入中文,通过Edittext的digits属性控制输入内容
在string.xml添加:
<string name="cesh">0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.@,~-:*?!_#/=+&^;{}|\""'\'<\%[]
\>()$\"</string>这个基本包含了所有的非中文字符
其中
"
(" 或 ")
' (' 或 ')
& (& 或 &)
< (< 或 <)
> (> 或 >)
然后对控件设置digits属性
<EditText
android:id="@+id/myspinner_showdata"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:gravity="center_vertical"
android:paddingLeft="5dp"
android:paddingRight="65dp"
android:background="@drawable/biankuang"
android:digits="@string/cesh"
android:text="" />
就可以了
12.两个编辑框之间相互影响修改
借鉴网络上的方法,这个需要熟悉编辑框的回调的三个方法的执行顺序,还有监听的移除监听的使用
edit_two = (EditText) findViewById(R.id.edit_two);
edit_one = (EditText) findViewById(R.id.edit_one);
edit_one.setText("你好");
edit_two.setText("测率");
one = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
edit_two.removeTextChangedListener(two);
edit_two.setText(s.toString());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
edit_two.addTextChangedListener(two);
}
};
two = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
edit_one.removeTextChangedListener(one);
edit_one.setText(s.toString());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
edit_one.addTextChangedListener(one);
}
};
edit_two.addTextChangedListener(two);
edit_one.addTextChangedListener(one);
相关文章推荐
- 往EditText中添加图标的简单方法
- Android EditText中添加图标的简单方法
- android中EditText如何设置取消自动聚焦的一种简单方法
- Android自定义EditText:你需要一款简单实用的SuperEditText(一键删除&自定义样式)
- Asp.net验证码实现的方法,简单实用。
- postgre存储过程简单实用方法 (过程语言: PL/pgSQL)
- 一个简单实用的保护视力的方法(IT人士必看的方法)
- 一种简单实用的全屏方法
- 导出的最简单方法(text/html/word)
- 简单实用的分页控件 AspNetPager.dll 下载地址、使用方法、含有代码示例
- 简单实用方法!!
- 一种简单实用的全屏方法
- 分享一个简单而实用的缩略图方法
- 如何制作大容量U盘PE多功能启动盘教程(方法简单、实用)
- 简单实用的两种MySQL数据库备份的方法
- 让程序只运行一个实例的简单实用的方法
- 简单的判断浏览器兼容的方法&兼容获取innerText
- 向广大程序员推荐的简单实用的健身方法。
- 比较简单实用的使用正则三种版本的js去空格处理方法
- GIT 简单实用方法