您的位置:首页 > 其它

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"当限定试显示行数时省略多余文字的位置,是省略号在开头还是结尾。

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息