Editext屬性

EditText設置可以編輯和不可編輯狀態 

用editText.setFocusable(false);和editText.setFocusableInTouchMode(false);設置不可編輯狀態;editText.setFocusableInTouchMode(true);editText.setFocusable(true);editText.requestFocus();設置可編輯狀態

這個可以實現可編輯和不可編輯,但是又發現一個問題,在不可編輯狀態如果常按住控件,可以進行粘帖操作,不知道怎麼可以不能進行粘帖啊

EditText屬性(API 24)


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

接下來我們看一下inputType可以接受的參數:

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

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

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

"textCapSentences" 普通的文本鍵盤,大寫每個新句子的第一個字母.

"textCapWords" 大寫每個單詞的正常文本鍵盤.適合標題或人名.
"textAutoCorrect" 正常文本鍵盤,可糾正拼寫錯誤的字詞.
"textPassword" 這個就和設置password="true"是一樣的效果.以原點的形式顯示輸入的文本.
"textMultiLine" 普通文本鍵盤,允許用戶輸入包含換行符的長字符串(回車符).
 

指定鍵盤action

說了當需要指定鍵盤action時,需要和inputType結合使用纔會有效果,下面就來看下imeOptions可以接受的參數:下面直接來張圖,大家一看就明白了.上圖....


在代碼中我們可以響應action操作的事件.如xml佈局中有一個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, "點擊actionSearch執行的操作 ", Toast.LENGTH_SHORT).show(); 
         handled = true;
     } 
     return handled;
 } 
 });
注意:再次提醒,在使用imeOptions時,如果你沒有使用inputType屬性,是不會有效果的.如果你還在使用Eclipse開發,可能還會用到android:singleLine="true"這一屬性.return true表示吃掉事件。
 

軟鍵盤擋住輸入框問題的終極解決方案

在頁面底部有一個EditText,如果不做任何處理,那麼在軟鍵盤彈出的時候,就有可能會擋住EditText。
對於這種情況的處理其實很簡單,只需要在AndroidManifest文件中對activity設置:android:windowSoftInputMode的值adjustPan或者adjustResize即可,像這樣:

<activity
    android:name=".MainActivity"
    android:windowSoftInputMode="adjustPan"  >
    ...
</activity>

一般來說,他們都可以解決問題,當然,adjustPanadjustResize的效果略有區別。

  • adjustPan是把整個界面向上平移,使輸入框露出,不會改變界面的佈局;
  • adjustResize則是重新計算彈出軟鍵盤之後的界面大小,相當於是用更少的界面區域去顯示內容,輸入框一般自然也就在內了。

AndroidBug5497Workaround使用:

 

帶有WebView的activity使用了全屏模式或者adjustPan模式,影響鍵盤

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章