EditText使用詳解

前言

EditTex是Android中比較常用的一個(gè)控件,可以說它是用戶和Android應(yīng)用進(jìn)行數(shù)據(jù)傳遞的通道.通過它,用戶可以把數(shù)據(jù)傳給App,然后我們可以獲取到用戶輸入的數(shù)據(jù).

EditText是TextView的子類,它繼承了TextView的所有屬性.在實(shí)際開發(fā)中我們可能會(huì)根據(jù)開發(fā)需求,自定義出比較美觀的EditText控件,這里我們不說自定義EditText.主要說一下EditText使用中的細(xì)節(jié).以及使用EditText過程中遇到的坑...

EditText屬性(API 24)

  • android:hint //設(shè)置hint提示文本
  • android:textColorHint //設(shè)置hint提示文字顏色
  • android:textColor //設(shè)置文字顏色
  • android:textSize //設(shè)置文本字體大小
  • android:textStyle //設(shè)置文本字體樣式,bold(加粗),italic(傾斜),normal(默認(rèn)是正常字體).
  • android:numeric //控制EditText輸入數(shù)字的類型 decimal(浮點(diǎn)數(shù)),integer(正整數(shù)),signed(帶+ -號(hào)的整數(shù)).注意:該屬性在使用時(shí)提示已過時(shí),建議使用android:inputType屬性替代.
  • android:singleLine //設(shè)置是否單行輸入 true(單行輸入),false(會(huì)自動(dòng)換行).注意:蓋屬性在使用時(shí)提示已過時(shí),建議使用android:maxLines="1"屬性替代.
  • android:password="true" //以密文的形式顯示輸入的文本.注意:該屬性在使用時(shí)提示已過時(shí),建議使用android:inputType屬性替代.
  • android:textAlignment //設(shè)置EditText中文本顯示的位置,center(居中),inherit(默認(rèn),居左邊顯示),viewStart(居左顯示),viewEnd(居右顯示),textStart(居左顯示),textEnd(居右顯示).這里需要注意的是最低支持的API版本是17,前兩個(gè)可以在API14中使用,而后面使用就會(huì)報(bào)紅線...
  • android:textColorHighlight //設(shè)置被選中字體的顏色.默認(rèn)為 Theme 主題中的 “colorAccent”的顏色.
  • textCursorDrawable //設(shè)置被光標(biāo)的顏色.默認(rèn)為 Theme 主題中的 “colorAccent”的顏色.
  • android:textScaleX //設(shè)置文本的水平縮放系數(shù).
  • android:typeface //設(shè)置hint提示文本的字體.normal(默認(rèn)),monospace,sans,serif.這里就不解釋了,大家試一下就能看出效果.
  • android:background //設(shè)置EditText背景."@null"設(shè)置背景為透明.當(dāng)我們?cè)O(shè)置背景后,EditText的那條線就會(huì)消失.
  • android:textAppearance //設(shè)置文本的顏色,字體,大小和樣式.
  • android:digits //設(shè)置只接收指定的文本內(nèi)容.
  • android:phoneNumber="true" //設(shè)置輸入電話號(hào)碼.注意:該屬性在使用時(shí)提示已過時(shí),建議使用android:inputType屬性替代.
  • android:editable //設(shè)置EditText是否可以編輯.當(dāng)你設(shè)置為true,會(huì)提示你該EditText已經(jīng)是可編輯的.設(shè)置為false時(shí)會(huì)提示使用inputType替代.
  • android:inputType //設(shè)置文本的類型,用于幫助輸入法顯示合適的鍵盤類型.
  • android:maxLength //設(shè)置EditText最多接受的文本的個(gè)數(shù).
  • android:lines //設(shè)置EditText顯示的行數(shù),設(shè)置兩行就顯示兩行坠宴,即使第二行沒有數(shù)據(jù).
  • android:lineSpacingExtra //設(shè)置行間距.
  • android:lineSpacingMultiplier //設(shè)置行間距的倍數(shù). 如設(shè)置成1.5倍.
  • android:imeOptions //設(shè)置右下角IME動(dòng)作與編輯框相關(guān)的動(dòng)作以躯,如actionDone右下角將顯示一個(gè)“完成”,而不設(shè)置默認(rèn)是一個(gè)回車符號(hào).下面會(huì)詳細(xì)說明.

使用細(xì)節(jié)

我們?cè)谑褂肊ditText中有時(shí)候會(huì)限制輸入框中輸入的文本類型,或者當(dāng)彈出軟鍵盤時(shí),出現(xiàn)的是比較合適的輸入法.如:我們?cè)诳劭蹠r(shí),彈出的軟件盤顯示的就是數(shù)字,當(dāng)輸入密碼時(shí),右下角編輯框顯示的是"完成",點(diǎn)擊即會(huì)關(guān)閉軟鍵盤.其實(shí)這也就是inputType和imeOptions屬性來實(shí)現(xiàn)的,inputType屬性可以指定鍵盤的類型,而imeOptions指定鍵盤右下角顯示的Action.下面我們就來實(shí)現(xiàn)EditText使用過程中的小細(xì)節(jié).

  1. 這個(gè)類似QQ登錄輸入框,第一個(gè)EditText(用戶名)的inputType設(shè)置的是text,imeOptions設(shè)置的是actionNext(下一個(gè)).第二個(gè)EditText(密碼)的inputType設(shè)置的是textPassword,imeOptions設(shè)置的是actionDone(完成).當(dāng)輸入完用戶名,點(diǎn)擊鍵盤action下一個(gè),會(huì)跳到密碼輸入框,當(dāng)輸入完密碼后,點(diǎn)擊鍵盤action完成,軟鍵盤就會(huì)隱藏.來看下效果圖就明白來.

    效果圖:

    Xml布局:

     <EditText
         android:id="@+id/et_user_name"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:hint="請(qǐng)輸入用戶名..."
         android:imeOptions="actionNext"
         android:inputType="text"
         android:textColor="@color/black" />
    
     <EditText
         android:id="@+id/et_password"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:hint="請(qǐng)輸入密碼..."
         android:imeOptions="actionDone"
         android:inputType="textPassword"
         android:textColor="@color/black" />
    

    注意:這里需要注意的是,如果想讓鍵盤顯示Action,需要inputType和imeOptions結(jié)合使用才可以,只使用imeOptions是不會(huì)有效果的.只會(huì)顯示默認(rèn)的換行action.(不同手機(jī)的輸入法不一樣,可能顯示的會(huì)有點(diǎn)小差別)

  2. 接下來我們看一下inputType可以接受的參數(shù):

    我們可以使用android:inputType屬性指定要用于EditText對(duì)象的鍵盤類型.例如,如果你希望用戶輸入電子郵件地址啄踊,則應(yīng)使用textEmailAddress輸入類型.以下是輸入類型常見的值:

    • "text" 普通文本鍵盤
    • "textEmailAddress" 帶有@字符的普通文本鍵盤
    • "textUri" 帶有/字符的普通文本鍵盤.
    • "number" 基本數(shù)字鍵盤.
    • "phone" 電話樣式鍵盤.
    • "datetime" 時(shí)間日期.
    • "date" 日期.

    android:inputType還允許指定某些鍵盤行為,例如是否大寫所有新單詞或使用自動(dòng)完成和拼寫建議等功能.以下是定義鍵盤行為的一些常見輸入類型值:

    • "textCapSentences" 普通的文本鍵盤,大寫每個(gè)新句子的第一個(gè)字母.
    • "textCapWords" 大寫每個(gè)單詞的正常文本鍵盤.適合標(biāo)題或人名.
    • "textAutoCorrect" 正常文本鍵盤,可糾正拼寫錯(cuò)誤的字詞.
    • "textPassword" 這個(gè)就和設(shè)置password="true"是一樣的效果.以原點(diǎn)的形式顯示輸入的文本.
    • "textMultiLine" 普通文本鍵盤,允許用戶輸入包含換行符的長字符串(回車符).
  3. 上面演示第一個(gè)小栗子時(shí),說了當(dāng)需要指定鍵盤action時(shí),需要和inputType結(jié)合使用才會(huì)有效果,下面就來看下imeOptions可以接受的參數(shù):下面直接來張圖,大家一看就明白了.上圖....

    在代碼中我們可以響應(yīng)action操作的事件.如xml布局中有一個(gè)id為search的EditText控件,并指定imeOptions="actionSearch",我們可以指定action操作的事件.

     EditText editText = (EditText) findViewById(R.id.search);
     editText.setOnEditorActionListener(new OnEditorActionListener() { 
     @Override 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
         boolean handled = false;
         if (actionId == EditorInfo.IME_ACTION_SEND) {
             Toast.makeText(this, "點(diǎn)擊actionSearch執(zhí)行的操作 ", Toast.LENGTH_SHORT).show(); 
             handled = true;
         } 
         return handled;
     } 
     });
    

    注意:再次提醒,在使用imeOptions時(shí),如果你沒有使用inputType屬性,是不會(huì)有效果的.如果你還在使用Eclipse開發(fā),可能還會(huì)用到android:singleLine="true"這一屬性.

  4. 最后一個(gè)就是使用EditText中遇到的坑了....相信大多數(shù)開發(fā)者都遇到過,那就是當(dāng)你的EditText輸入框在屏幕的下方時(shí),彈出軟鍵盤會(huì)遮擋住輸入框...當(dāng)然,你可以使用ScrollView嵌套EditText來解決這一問題.但我最近看到一篇文章,感覺很優(yōu)雅的就解決了這個(gè)問題.下面貼出文章地址,我就不羅嗦了.軟鍵盤擋住輸入框問題的終極解決方案.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末忧设,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子颠通,更是在濱河造成了極大的恐慌址晕,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件顿锰,死亡現(xiàn)場離奇詭異谨垃,居然都是意外死亡启搂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門刘陶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胳赌,“玉大人,你說我怎么就攤上這事匙隔∫缮唬” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵纷责,是天一觀的道長捍掺。 經(jīng)常有香客問我,道長再膳,這世上最難降的妖魔是什么挺勿? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮喂柒,結(jié)果婚禮上不瓶,老公的妹妹穿的比我還像新娘。我一直安慰自己灾杰,他們只是感情好湃番,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吭露,像睡著了一般吠撮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上讲竿,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天泥兰,我揣著相機(jī)與錄音,去河邊找鬼题禀。 笑死鞋诗,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的迈嘹。 我是一名探鬼主播削彬,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼秀仲!你這毒婦竟也來了融痛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤神僵,失蹤者是張志新(化名)和其女友劉穎雁刷,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體保礼,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡沛励,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年责语,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片目派。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡坤候,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出企蹭,到底是詐尸還是另有隱情白筹,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布练对,位于F島的核電站,受9級(jí)特大地震影響吹害,放射性物質(zhì)發(fā)生泄漏螟凭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一它呀、第九天 我趴在偏房一處隱蔽的房頂上張望螺男。 院中可真熱鬧,春花似錦纵穿、人聲如沸下隧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽淆院。三九已至,卻和暖如春句惯,著一層夾襖步出監(jiān)牢的瞬間土辩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來泰國打工抢野, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拷淘,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓指孤,卻偏偏與公主長得像启涯,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子恃轩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,185評(píng)論 25 707
  • 自學(xué)Android路上的小問題结洼,自己Mark。持續(xù)更新叉跛,稍后整理补君。 EditText介紹: EditText 在開...
    勿忘心安0521閱讀 3,732評(píng)論 0 8
  • 親愛的朋友, 祝好昧互!距離上次給你寫信已經(jīng)過了五天挽铁,這五天來伟桅,心情有些抑郁,每日都強(qiáng)強(qiáng)打起精神叽掘,就像每日規(guī)定的背單...
    居無所處閱讀 413評(píng)論 0 1
  • 1.NSOperation NSInvocationOperation NSBlockOperation 一個(gè)NS...
    solozyx閱讀 747評(píng)論 0 0
  • 昨天晚上9點(diǎn)過準(zhǔn)備睡覺楣铁,微信閃了一下。是楊帆發(fā)給我們的更扁,“馬姐盖腕,我孩子燒到40.5度,用我們的祛痛液管用嗎“...
    法紫閱讀 213評(píng)論 0 1