###前言
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
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!