1. 程式人生 > >EditText,這篇就夠了

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顯示的行數,設定兩行就是顯示兩行,要想有效果,需要的是heightwrap_content, 
maxLinesEditText最大行數為3行,當輸入的內容超過3行後,它形狀的大小不會根據輸入內容的多少而改變,反正它顯示的內容就是3行
而使用minLinesEditText是至它至少顯示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;
            }
        });
//但是,需要注意:使用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); 

相關推薦

EditText

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

五險一金

相信已工作的大哥大姐們對自己繳納的社會保險都是非常關注的吧...認真看吧 “耐心看吧” .. 絕對有用 首先,大家應該意識到社會保險是比商業保險更為優質的一種保險.. 原因大致如下: (1)社會保險是國家不以營利為目的而開展的全民福利保障事業.. 而商業保險是要營利的 . .

學習Java JDBC

影響 數據庫中間件 project prepare 管理系 lba 分布 為我 vax JDBC (Java DB Connection)---Java數據庫連接 JDBC是一種可用於運行SQL語句的JAVA API(ApplicationProgramming

入門Webpack

ref ebp shu 走了 pack webp body 入門 ble 原文地址:https://www.jianshu.com/p/42e11515c10f一直以前對webpack不是很了解,通過看了原文,自己動手走了一邊,算是對webpack有了個入門。我把自己做了的

Map總結

java map 概要 學完了Map的全部內容,我們再回頭開開Map的框架圖。 第1部分 Map概括 (01) Map 是“鍵值對”映射的抽象接口。(02) AbstractMap 實現了Map中的絕大部分函數接口。它減少了“Map的實現類”的重復編碼。(03) SortedMap 有序的“鍵值對”映

服務器Centos7.4 下jdk1.8環境配置、mysql環境搭建mysql找回(重置)密碼看

版本 jdk下載 改密 我們 完成 eight ati html wid 最近一直幫我的同學搭建自己的服務器,其中涉及到了以下知識點,經過查詢博客資料等方式,再加上多重實踐,我成功總結出了完整的配置一個簡單服務器環境的步驟: (來自 ZYXS 的CSDN 博客 ,全文地址請

入門 Webpack

通過 位置 post 進行 參考 sets 想要 避免 pat 轉:https://segmentfault.com/a/1190000006178770 2018年8月25日更新,目前 webpack 已經更新值 4.17.1 ,本文所用到的各種庫或多或少有些過時,跟著代

es6 -- 透徹掌握Promise的使用

Promise的重要性我認為我沒有必要多講,概括起來說就是必須得掌握,而且還要掌握透徹。這篇文章的開頭,主要跟大家分析一下,為什麼會有Promise出現。 在實際的使用當中,有非常多的應用場景我們不能立即知道應該如何繼續往下執行。最重要也是最主要的一個場景就是ajax請求。通俗來說,由於網速的不同,可能你得

前端基礎進階(十三):透徹掌握Promise的使用(轉)

https://www.jianshu.com/p/fe5f173276bd Promise的重要性我認為我沒有必要多講,概括起來說就是必須得掌握,而且還要掌握透徹。這篇文章的開頭,主要跟大家分析一下,為什麼會有Promise出現。 在實際的使用當中,有非常多的應用場景我們不能立即知道應該如

Elasticsearch Query DSL 整理總結(二)—— 要搞懂 Match Query

目錄 引言 構建示例 match operator 引數 analyzer lenient 引數 Fuzziness fuzzniess 引數 什麼是模糊搜尋? Levenshtein Edit Dist

KubeCon中國峰會首日技術乾貨看

  雲原生領域旗艦盛會KubeCon+CloudNativeCon在2018年冬天終於來到中國,11月14日,大幕開啟的KubeCon迎接了2500多名參會者,來自亞洲、北美、歐洲、澳洲等地區的科技公司和使用者代表匯聚中國上海,共襄Kubernetes引領的雲原生技術帶給世界

Python Web怎麼學

Python目前應用領域實在太多,這也是他這麼火的原因吧。我認為目前Python作為應用領域來說幾個方向是值得肯定的:人工智慧、大資料分析、DevOps、Web、自動化測試、爬蟲。 在Python基礎方向,我認為必須掌握的技能有: 基本資料型別、內建資料結構 函式、高階函式、裝飾器 迭代器、

Python Web怎麽學

哪些 都是 這一 djang quest int 數據類型 簡單 dev Python目前應用領域實在太多,這也是他這麽火的原因吧。我認為目前Python作為應用領域來說幾個方向是值得肯定的:人工智能、大數據分析、DevOps、Web、自動化測試、爬蟲。 在Python基礎

繼萬字諫言後Python Web 怎麼學

  1. 之前那篇「萬字諫言,給那些想學Python的人,建議收藏後細看!」得到很多後臺讀者的留言,表示想再來點,甚至說萬字系?你知道萬字有多少麼?不要槓我根本沒有萬字!不叫萬字你能看到這篇良心嘛! 那憋了3天了,今天放個web好了,相信很多讀者都有關注web開發,那我們

Python 中的 orand 運算

問題出現: Python 中的 or,and 運算,可以寫出非常複雜的演算表示式; 看了一些大神的演算規則解釋,覺得不是很好理解,有些人甚至理解錯了規則。 這篇部落格聊一下自己的理解。 其他人是怎麼做的: 先看兩個例子熱下身: return 1 or 2 return

Python 中的 or and 運算

可能 參考答案 大神 cto 51cto 是不是 拆分 並且 情況 問題出現: Python 中的 or,and 運算,可以寫出非常復雜的演算表達式; 看了一些大神的演算規則解釋,覺得不是很好理解,有些人甚至理解錯了規則。 這裏聊一下自己的理解。 其他人是怎麽做的:

10大經典排序演算法動圖演示!(配相應程式碼)

排序演算法是《資料結構與演算法》中最基本的演算法之一。 排序演算法可以分為內部排序和外部排序。 內部排序是資料記錄在記憶體中進行排序。 而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。 常見的內部排序演算法有:插入排序、希爾排序、選擇排序、氣泡排序、歸併排序、快速排

Java 動態代理

這篇文章需要用到 Java 的反射知識,如果對反射還不清楚的小夥伴,可以先移步到這裡 《Java進階-反射》。 程式設計思想都是來自於生活的,“代理” 在生活中很常見。比如我們買一個東西時,一般都不會是直接從工廠裡買的,而是去商店或者其他的商家買,這些商家做的事情就是代理。

mybatis 快取的使用

快取的重要性是不言而喻的。 使用快取, 我們可以避免頻繁的與資料庫進行互動, 尤其是在查詢越多、快取命中率越高的情況下, 使用快取對效能的提高更明顯。 mybatis 也提供了對快取的支援, 分為一級快取和二級快取。 但是在預設的情況下, 只開啟一級快取(一級快

搞定計算機網路面試

文章目錄結構:  一 OSI與TCP/IP各層的結構與功能,都有哪些協議 運輸層主要使用以下兩種協議: UDP的主要特點: TCP的主要特點: 域名系統(Domain Name System縮寫DNS,Doma