EditText,這篇就夠了

###前言
EditText這個控件,是程序和用戶溝通橋樑,它本身也定義了許多的方法,來滿足形形色色的需求,這裏進行彙總,難免會不全,請留言補充,謝謝!這裏首先介紹過時的方法,在分類介紹,方便查閱。
###過時的方法
android:numeric

可以選擇:
decimal:浮點數
interger:正整數
signed:可以負數
可以讓EditText接收一個數字,回車鍵也變成了“完成”
比如,用decimal,則是55.54,而不是55.54.54

android:password="true"

設置是否以密文的形式顯示輸入的文本,可以用android:inputType中屬性代替,後面介紹。

android:phoneNumber=”true”

這裏輸入電話號碼,但是過時了,另外這裏不具有判斷手機號是否合適,只是打開數字鍵盤罷了,只能輸入數字

android:editable="false"

設置EditText是否可以編輯,但是也是過時的,有提示說是inputType="none"代替,但是效果不是太好

android:singleLine

設置爲false,會自動換行,但是該屬性已經過時,可以用android:maxLines=”1”屬性代替

###基礎方法
需要注意,EditText上面有兩塊內容,一個是提示語,一個是用戶輸入的字

android:hint

顯示提示文本,當用戶點擊時候,還有,只有輸入完新的文本之後就會消失

android:textColorHint

設置提示文本的顏色

android:textColor

設置文本顏色(用戶輸入的)

android:textSize

設置文本字體大小(可以控制提示文本和用戶輸入的文本)

android:textColorHiglight

被選中字體的顏色,默認是Theme中的colorAccent中的顏色,這個是針對的,當用戶用手長按住用戶輸入的內容,就會出來選中區域,用戶可以選擇剪切,粘貼之類的行爲,而選中區域顯示的顏色,就是這個屬性定義的顏色

android:background

設置EditText背景,@null,設置的背景是透明,但是隻要設置了背景色之後,EditText那條線就會消失,可以發現,不管是弄成什麼顏色,那條線就沒了

###針對於字體,光標,行距之類
android:textStyle

置文本字體樣式,bold(加粗),italic(傾斜)、normal(正常,默認顯示這個),這個控制的是提示文本和用戶輸入的文本,都控制。

android:textAlignment

設置EditText中文本顯示的位置,
center:居中,
inherit:默認的,在右邊顯示,
viewStart:居左顯示,
viewEnd:居右顯示,
textStart:居左顯示,
textEnd:居右顯示
可以發現各有兩個,前面view開頭的是在最低十七,後面text開頭是在最低14,
還需要注意是,這個針對於提示文字還有輸入內容都管用

android:textCursorDrawable

設置光標的顏色,這裏有一個很大的誤區,修改光標的顏色,並不是用顏色,而是用shape標籤修飾的drawable圖片來完成,,但是可以通過@null和android:cursorVisible=”true”,讓光標不顯示,
其實經過自己測試,如果你錯誤的用了android:textCursorDrawable="#ffff44"之類的,那麼光標也會消失,但是,並不會有你想要的效果,具體的shape,如下面:
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <size android:width="20dp" />
    <solid android:color="#2b6ad4" />
</shape>

android:textScaleX

設置文本的水平縮放係數,就是說,將提示文本和輸入文本水平拉伸,
下面有一個放大了三倍效果的圖和原來的進行比較:

這裏寫圖片描述


這裏寫圖片描述

android:typeface:

設置提示文本字體,和前面的斜體、加粗什麼不一樣哦,這個是針對於宋體、楷體之類的。
Android一共支持四中字體,sans字體、serifis字體、monospace字體、默認字體、
如何使用別的字體,
首先,java文件夾同級下建立assets文件夾,建立fonts文件夾,將ttf字體導入,
代碼中:
AssetManager mgr = getAssets();
Typeface tf = Typeface.createFramAsset(mgr,”fonts/xxx.ttf”)
textView.setTypeface(tf);而EditText也是類似的,這裏以TextView爲例

這裏寫圖片描述

android:lineSpacingExtra與android:lineSpacingMultiplier:

從字面意思上看,就是行與行之間的距離
這兩個不同的是,第一個是直接設置值,比如50dp,第二個則是設置倍數,

android:textAppearance:

設置文本的顏色,字體,大小和樣式,
一般是:android:textAppearance="?android:attr/textAppearanceLargeInverse"
但是沒有看出效果來。

###針對於文本內容
android:digits

設置只接受指定的文本內容,比如設置了0123456這幾個數字,那麼在彈出軟鍵盤時候,進行輸入時候,發現,只有點擊上面幾個數字纔有效果,要不然,點擊是沒有效果的。Edittext上面的內容也不會變化。

android:maxLength

設置EditText最多接受的文本的個數,比如你設置爲2,那麼你不管是輸入,英文還是數字,加起來只能最多是2個

android:lines與android:maxLines和android:minLines

android:lines:設置EditText顯示的行數,設置兩行就是顯示兩行,要想有效果,需要的是height爲wrap_content, 
maxLines的EditText最大行數爲3行,當輸入的內容超過3行後,它形狀的大小不會根據輸入內容的多少而改變,反正它顯示的內容就是3行
而使用minLines的EditText是至它至少顯示3行內容(包括內容爲空時,可對比圖片),當輸入的內容超過3行後,它形狀的大小根據輸入內容的多少而改變。

android:inputType

設置文本的類型,用於幫助輸入法顯示合適的鍵盤類型,這個是屬於比較重要的應用。
(1)可以設置合適的鍵盤

text:普通文本鍵盤(經過測試像表情符號,英文,漢子,數字,標點,加減號都是可以的,並且回車鍵變成了下一步,這個是默認的)
這裏寫圖片描述

textEmailAddress:帶有@字符的普通文本鍵盤
這裏寫圖片描述

textUri:帶有/字符的普通文本鍵盤
這裏寫圖片描述

number:基本數字鍵盤
這裏寫圖片描述

phone:電話樣式鍵盤
這裏寫圖片描述

datetime:時間日期
這裏寫圖片描述

data:日期
這裏寫圖片描述

(2)改變輸入的內容
textCapSentences:普通的文本鍵盤,大寫每個新句子的第一個字母,沒看出來

textCapWord:大寫每個單詞的正常文本鍵盤,適合標題和人名

textCapCharachter:暫時沒看出來

textAutoCorrect:正常文本鍵盤,可以糾正拼寫錯誤的字詞

textpassword:這個就和password=”true”一樣

textMultiLine“普通文本鍵盤,允許用戶輸入包含換行字符的長字符串

android:imeOptions
也是關鍵屬性,
設置右下角IME動作與編輯框相關的動作
圖片來自網絡
關於它的屬性和效果在鍵盤上的,一張圖就完全的告訴了。

另外還可以設置監聽

mEditText = (EditText) findViewById(R.id.my);
mEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
  @Override
  public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) {
                boolean is = false;
                if (i == EditorInfo.IME_ACTION_SEND) {//針對於不同的點擊動作
                    Toast.makeText(MainActivity.this, "點擊actionSearch執行的操作 ", Toast.LENGTH_SHORT).show();
                    is = true;
                }
                return is; //如果你想讓鍵盤消失的話,那麼這裏直接返回false,不用進行攔截了.如果返回true 那麼鍵盤不會消失.
            }
        });
//但是,需要注意:使用imeOptions時,如果你沒有使用inputType屬性,是不會有效果的.如果你還在使用Eclipse開發,可能還會用到android:singleLine="true"這一屬性

###如何顯示隱藏鍵盤

1、//隱藏軟鍵盤
((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(WidgetSearchActivity.this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);   
2、//顯示軟鍵盤,控件ID可以是EditText,TextView
((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE)).showSoftInput(控件ID, 0); 

###如何在進入一個Actiivty的時候不自動打開虛擬鍵盤

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

或者是:

<activity
  ...
  android:windowSoftInputMode="stateHidden" >

###解決彈出Dialog又再自動彈出虛擬鍵盤如果Dialog中含有EditorText

AlertDialog dialog =new AlertDialog.Builder(this).setView(et_url).create();
        dialog.getWindow().setSoftInputMode(
        WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
        dialog.show();
--------------------- 
作者:舵哥 
來源:CSDN 
原文:https://blog.csdn.net/liduolp/article/details/48491579 
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!
發佈了28 篇原創文章 · 獲贊 4 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章