Android属性之EditText


EditText继承关系:View–>TextView–>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”
文字外观,这里引用的是系统自带的一个外观,?表示系统是否有这种外观,否则使用默认的外观。不知道这样理解对不对?

通过EditText的layout xml文件中的相关属性来实现:
1. 密码框属性 android:password=”true” 这条可以让EditText显示的内容自动为星号,输入时内容会在1秒内变成*字样。
2. 纯数字 android:numeric=”true” 这条可以让输入法自动变为数字输入键盘,同时仅允许0-9的数字输入
3. 仅允许 android:capitalize=”cwj1987″ 这样仅允许接受输入cwj1987,一般用于密码验证

下面是一些扩展的风格属性
android:editable=”false” 设置EditText不可编辑
android:singleLine=”true” 强制输入的内容在单行
android:ellipsize=”end” 自动隐藏尾部溢出数据,一般用于文字内容过长一行无法全部显示时

转载自:Android之EditText 属性汇总

————————————————-

EditText始终不弹出软件键盘

1.EditText默认不弹出软件键盘
方法一:
在 AndroidMainfest.xml中选择哪个activity,设置windowSoftInputMode属性为 adjustUnspecified|stateHidden。例如:


            
                
                
            

方法二:
让 EditText失去焦点,使用EditText的clearFocus方法。例如:

EditText edit=(EditText)findViewById(R.id.edit);
edit.clearFocus();

方法三:
强制隐藏Android输入法窗口,例如:

EditText edit=(EditText)findViewById(R.id.edit);
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(edit.getWindowToken(),0);

2.EditText始终不弹出软件键盘,例:

EditText edit=(EditText)findViewById(R.id.edit);
edit.setInputType(InputType.TYPE_NULL);

设置EditText不可编辑

本来这个也不算个大问题,但我开发中确实遇到了,特开此贴,希望能帮到一些android新手。可能有人会说,设置EditText不可编辑那还不简单,直接设置

android:editable="false"

就可以了,如果你一直是这么做的,那么你就不用看下去了,在android2.2中直接设置 android:editable=”false”是不起作用的,(我在模拟器和真机环境中测试都不起作用) 在android2.2中 editable是depreceated的,大家可以看看api文档http://developer.android.com/reference/android/R.attr.html#editable 。

我自己试了一下 但貌似可行 but以备后患,那么我们是不是就不可以设置EditText的编辑状态呢,当然不是,我们可以设置

android:focusable="false"

这是什么意思呢,很简单,不让它获得输入焦点(不要告诉我你不知道什么是焦点),既然得不到焦点,当让就无法输入了,我在http://stackoverflow.com/questions/4824676/making-not-editable-edittext-component 上也到的这样的解决方式。

那么为什么要这么做呢,为什么不要 android:editable了呢,这是一个用户体验的问题。android是一个移动平台,大多数是没有键盘的,都是屏幕软键盘,如果你设置EditText为不可编辑,那么就不应该打开软键盘,而不是打开软键盘了又无法输入。

似乎到了这里就没有说的了,请你不要着急,这样设置后有一个问题,无法选中EditText的内容,因为它无法获得焦点 ,这个问题我也不知道怎么解决,希望大大们能给解决下。

如何在java代码中控制EditText不可编辑呢,因为EditText没有setEditable这样的方法,这个问题坛子里已经有很多高手解决了,使用InputFilter,具体如下:

你的EditText.setFilters(new InputFilter[] {   
            new InputFilter() {   
                public CharSequence filter(CharSequence source, int start,   
                        int end, Spanned dest, int dstart, int dend) {   
                    return source.length() < 1 ? dest.subSequence(dstart, dend) : "";   
                }   
            }   
        });

这样做就可以在java代码中动态设置EditText的编辑状态了,但这个无法解决用户体验的问题,软键盘依然会打开,但无法输入,但可以选择内容。

转载自:android EditText 全面阐述

发表评论