Android EditText若干知识点和用法

来源:互联网 发布:sql事务 编辑:程序博客网 时间:2024/06/13 22:55

EditText一些常用属性:

android:text:设置默认输入的内容

android:hint:设置提示文字内容,即编辑框为空时显示的文字

android:textColor:文字的颜色

android:textColorHint:提示文字颜色

android:textColorHighlight:设置被选中文本内容的颜色,默认为蓝色

android:textAppearance:设置文字外观,值一般有“?android:attr/textxxx”

android:textSize:设置文字字体大小。包括提示文本,默认两种字体一样,除非另行设置(见下面)

android:textScaleX:设置文字水平之间间隔,默认为1.0f

android:typeface:设置文字的字型,一个有4个值:normal、sans、serif、monospace

android:textStyle:设置文字的字体,有3个值:normal.正常,bold.加粗、italic.斜体

android:textColorLink:设置链接文字的颜色

android:cursorVisible:是否显示光标

android:maxLines:设置最大行数,超出的部分不显示

android:lines:设置一个固定行数,超出不显示,即使行数不够也会显示那些行数,只是后面没数据

android:scrollHorizontally:设置编辑框是否可横向拖动,即文本内容较长时不自动换行,而是通过横向滚动查看后面内容

android:password:设置密文显示,输入的内容用“.”代替

android:singleLine:设置为单行,如果文字后面显示不出时则显示“...”

android:enabled:设置VIew是否开启

android:selectAllOnFocus:如果编辑框获取焦点则选中全部内容。而不是点击哪里将光标移到哪里。

android:includeFontPadding:设置文本包含顶部和底部的空白,默认为true

android:maxLength:设置内容长度最大值

android:shadowColor / android:shadowRadius:设置文本阴影颜色 / 设置阴影半径,两者一起使用

android:autoLink:设置自动链接,一共有6个值,分别对各种文本添加链接,none、web、email、phone、map、all.

android:linksClickable:设置的链接是否可点击

android:numeric:设置输入为数字,integer.正整数,signed.带符号整数,decimal.带小数点浮点数

android:digits:设置输入哪些特定字符

android:phoneNumber:设置为输入电话号码的输入方式

android:inputMethod:为该编辑框设置特定输入法,值为输入法完全包名。

android:capitalize:设置英文字母显示类型。none正常显示,sentences仅第一个字母大写,words每一个单词首字母大小,用空格区分单词,characters每一个英文字母都大写。

android:autoText:自动拼写帮助

android:editable:设置是否可编辑

android:freezesText:设置保存文本和光标位置

android:ellipsize:设置当文本过长时显示效果。none默认情况,start“...”在开始位置,middle“...”在中间,end“...”在后面,marquee跑马灯和android:marqueeRepeatLimit结合使用

android:lineSpacingExtra:设置行距

android:lineSpacingMultiplier:行间距倍数

android:marqueeRepeatLimit:android:ellipsize跑马灯共用,设置滚动次数,marquee_forever则循环滚动

android:inputType:设置输入文本的类型,配合输入法使用。

android:imeOptions:输入法回车位置的操作。可参考软键盘部分

android:textSelectHandle:设置内容选中时的左右箭头。可更换图片

android:textCursorDrawable:设置光标图片

android:textIsSelectable:设置文本是否可选中

android:textAllCaps:设置文本字母全为大写

android:background:设置背景

android:focusable:设置是否可以获得焦点

android:fitsSystemWindows:是否将整个屏幕当做可用空间,而不是去除顶部标题栏和状态栏和底部的虚拟按键栏

android:scrollbars:设置滑动条为横向的或是纵向的,或者为none

android:scrollbarStyle:设置滑动条风格

android:scrollbarSize:设置滑动条的尺寸,横向滑动的高,或者纵向滑动的宽

android:scrollbarFadeDuration:设置滑动条滑动后隔多久消失

android:scrollbarDefaultDelayBeforeFade:同上,都是设置淡出时间

android:scrollbarThumbHorizontal / android:scrollbarThumbVertical:设置滑块

android:scrollbarTrackHorizontal / android:scrollbarTrackVertical:设置滑到

android:scrollbarAlwaysDrawHorizontalTrack / android:scrollbarAlwaysDrawVerticalTrack:设置滑到是否一直显示

android:nextFocusLeft / android:nextFocusRight / android:nextFocusUp / android:nextFocusDown / android:nextFocusForward:定位下个焦点,默认焦点时从左往右,从上到下。例如:两个EditText,第一个输入后下一步焦点默认会传给下面的那个或者右边的那个。

android:clickable / android:longClickable:设置是否可点击 / 长按


监听EditText内容的变化:
一般监听内容时都是在EditText为空时和不为空这两种状态下做操作,例如当EditText为空时某个按钮处于不可点击状态,当输入后变成可点击状态。这时可以通过添加内容变化的监听事件addTextChangedListener,传入一个TextWatcher对象。使用如下:

mEditText.addTextChangedListener(myTextWatcher);
private TextWatcher myTextWatcher = new TextWatcher() {@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {// TODO EditText内容改变时触发}@Overridepublic void beforeTextChanged(CharSequence s, int start, int count,int after) {// TODO EditText内容改变前触发}@Overridepublic void afterTextChanged(Editable s) {// TODO EditText内容改变后触发String mStr = s.toString();if (mStr.length() > 0) {//按钮可点击}else{//按钮不可点击}}};


EditText设置文字和提示文字体大小和颜色都不一样

由于之前遇到一个情况是一个较小的数字输入框需要添加一些提示语,但数字字体很大,此时提示文字字体如果和数字的一样则会影响显示效果,因此在网上看到了一个方法,其实也很简单,就是容易忽略。其做法是在string文件中给string添加一个font,然后设置size,之后直接设置hint就可以。

string种:

<string name="edittext_hint"><font size="12">输入面积</font></string>
运用:

<EditText        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:hint="@string/edittext_hint" />
此时只要设置的textsize和这个大小不一样就可以。


点击EditText之外关闭软键盘:

我们常常会在输入之后希望点击其他位置直接关闭软键盘,而不需点击软键盘上的完成或者按下返回键。此时我们就可以按如下的方法实现。此方法也是网上看到自己亲自试了下效果觉得可以就记录一下。

@Override    public boolean dispatchTouchEvent(MotionEvent ev) {        if (ev.getAction() == MotionEvent.ACTION_DOWN) {            // 获得当前得到焦点的View,一般情况下就是EditText(特殊情况就是轨迹求或者实体案件会移动焦点)            View v = getCurrentFocus();            if (isShouldHideInput(v, ev)) {                hideKeyboard(v);            }        }        return super.dispatchTouchEvent(ev);    }    /**     * 根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘,因为当用户点击EditText时没必要隐藏     */    private boolean isShouldHideInput(View v, MotionEvent event) {        if (v != null && (v instanceof EditText)) {            int[] l = { 0, 0 };            v.getLocationInWindow(l);            int left = l[0], top = l[1], bottom = top + v.getHeight(), right = left                    + v.getWidth();            if (event.getX() > left && event.getX() < right                    && event.getY() > top && event.getY() < bottom) {                // 点击EditText的事件,忽略它。                return false;            } else {                return true;            }        }        // 如果焦点不是EditText则忽略,这个发生在视图刚绘制完,第一个焦点不在EditView上,和用户用轨迹球选择其他的焦点        return false;    }    private void hideKeyboard(View v) {        InputMethodManager imm = (InputMethodManager) NewHomeSubInclusiveActivity.this                .getSystemService(Context.INPUT_METHOD_SERVICE);        imm.hideSoftInputFromWindow(v.getWindowToken(), 0);    }





1 0
原创粉丝点击