上個星期看公司一個項(xiàng)目中靈活用到edittext 屬性inputtype。inputtype屬性不僅可以再xml里面定義崔步。還可以在activity設(shè)置的村视。項(xiàng)目應(yīng)用場景是這樣坚弱。一個頁面需要很多的對話框輸入斧拍,包括需要字符型雀扶,數(shù)字型,或者密碼輸入肆汹。但是只做了一個彈出對話框愚墓,然后不同調(diào)用這個對話框,用唯一碼識別那個按鍵調(diào)用彈出昂勉。那么彈出來對話框(輸入類型)要靈活設(shè)置浪册。就需要activity傳遞inputtype這個屬性值進(jìn)行設(shè)置。因?yàn)檫@個對話框都只調(diào)用了一個xml岗照。這是一個場景吧村象。
一、先說說xml里面的調(diào)用攒至,這個都不陌生的說厚者。
<EditText
android:id="@+id/edittext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number" />
這里輸入是數(shù)字吧。
二迫吐、activity里的調(diào)用籍救。或者其他class渠抹。
EditText testEditText = (EditText) findViewById(R.id.edittext);
int inputType = InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_NORMAL;
testEditText.setInputType(inputType);
這個inputType值是不會很好用啊。靈活吧闪萄!
那我貼圖看一下源碼中InputType屬性類吧梧却。如下圖,
這上面貼就是inputype全部屬性了败去,這些多看看放航,都是英文單詞。
三圆裕、順便介紹一下xml的inputtype的值广鳍。 android:inputType=”none”
android:inputType=”text”
android:inputType=”textCapCharacters” 字母大寫
android:inputType=”textCapWords” 首字母大寫
android:inputType=”textCapSentences” 僅第一個字母大寫
android:inputType=”textAutoCorrect” 自動完成
android:inputType=”textAutoComplete” 自動完成
android:inputType=”textMultiLine” 多行輸入
android:inputType=”textImeMultiLine” 輸入法多行(如果支持)
android:inputType=”textNoSuggestions” 不提示
android:inputType=”textUri” 網(wǎng)址
android:inputType=”textEmailAddress” 電子郵件地址
android:inputType=”textEmailSubject” 郵件主題
android:inputType=”textShortMessage” 短訊
android:inputType=”textLongMessage” 長信息
android:inputType=”textPersonName” 人名
android:inputType=”textPostalAddress” 地址
android:inputType=”textPassword” 密碼
android:inputType=”textVisiblePassword” 可見密碼
android:inputType=”textWebEditText” 作為網(wǎng)頁表單的文本
android:inputType=”textFilter” 文本篩選過濾
android:inputType=”textPhonetic” 拼音輸入
//數(shù)值類型
android:inputType=”number” 數(shù)字
android:inputType=”numberSigned” 帶符號數(shù)字格式
android:inputType=”numberDecimal” 帶小數(shù)點(diǎn)的浮點(diǎn)格式
android:inputType=”phone” 撥號鍵盤
android:inputType=”datetime” 時間日期
android:inputType=”date” 日期鍵盤
android:inputType=”time” 時間鍵盤
四荆几、介紹edittext其他常用屬性,網(wǎng)絡(luò)上收集的赊时。
android:layout_gravity="center_vertical" 設(shè)置控件顯示的位置:默認(rèn)top吨铸,這里居中顯示,還有bottom android:hint="請輸入數(shù)字祖秒!"設(shè)置顯示在空間上的提示信息
android:numeric="integer" 設(shè)置只能輸入整數(shù)诞吱,如果是小數(shù)則是:decimal
android:singleLine="true" 設(shè)置單行輸入,一旦設(shè)置為true竭缝,則文字不會自動換行房维。
android:password="true" 設(shè)置只能輸入密碼
android:textColor = "#ff8c00" 字體顏色
android:textStyle="bold" 字體,bold, italic, bolditalic
android:textSize="20dip" 大小
android:capitalize = "characters" 以大寫字母寫
android:textAlign="center" EditText沒有這個屬性抬纸,但TextView有 android:textColorHighlight="#cccccc" 被選中文字的底色咙俩,默認(rèn)為藍(lán)色
android:textColorHint="#ffff00" 設(shè)置提示信息文字的顏色,默認(rèn)為灰色
android:textScaleX="1.5" 控制字與字之間的間距
android:typeface="monospace" 字型湿故,normal, sans, serif, monospace
android:background="@null" 空間背景阿趁,這里沒有,指透明
android:layout_weight="1" 權(quán)重晓锻,控制控件之間的地位,在控制控件顯示的大小時蠻有用的歌焦。
android:textAppearance="?android:attr/textAppearanceLargeInverse" 文字外觀,這里引用的是系統(tǒng)自帶的一個外觀砚哆,独撇?表示系統(tǒng)是否有這種外觀,否則使用默認(rèn)的外觀躁锁。不知道這樣理解對不對纷铣?
通過EditText的layout xml文件中的相關(guān)屬性來實(shí)現(xiàn):
1. 密碼框?qū)傩?android:password="true" 這條可以讓EditText顯示的內(nèi)容自動為星號,輸入時內(nèi)容會在1秒內(nèi)變成*字樣战转。
2. 純數(shù)字 android:numeric="true" 這條可以讓輸入法自動變?yōu)閿?shù)字輸入鍵盤搜立,同時僅允許0-9的數(shù)字輸入
3. 僅允許 android:capitalize="cwj1987" 這樣僅允許接受輸入cwj1987,一般用于密碼驗(yàn)證 下面是一些擴(kuò)展的風(fēng)格屬性
android:editable="false" 設(shè)置EditText不可編輯
android:singleLine="true" 強(qiáng)制輸入的內(nèi)容在單行
android:ellipsize="end" 自動隱藏尾部溢出數(shù)據(jù)槐秧,一般用于文字內(nèi)容過長一行無法全部顯示時
雖然這些都是很簡單啄踊,但也很常用。細(xì)節(jié)需要注意刁标,才能做到極致颠通。