Android Studio中的EditText控制項使用詳解

來源:互聯網
上載者:User

Android Studio中的EditText控制項使用詳解
一:建立HelloEditText工程

建立設定如下:

Project name:HelloEditText Build Target :android 2.2 Application name:HelloEditText Package name:com.flysnow create Activity:HelloEditText min SDK 8

這時候運行還看不到EditText,因為我們還沒有加上,修改main.xml如下:

Xml代碼   android:layout_width="fill_parent" android:layout_height="fill_parent" >  


二:EditText簡介

EditText是一個非常重要的組件,可以說它是使用者和Android應用進行資料轉送窗戶,有了它就等於有了一扇和Android應用傳輸的門,通過它使用者可以把資料傳給Android應用,然後得到我們想要的資料。

EditText是TextView的子類,所以TextView的方法和特性同樣存在於EditText中,具體的TextView的介紹可以參考上一節Android系列教程之六:TextView小工具的使用--附帶超連結和跑馬燈效果

三:長度和空白提示文字,提示文字顏色,是否可編輯等

EditText有一些屬性可以設定EditText的特性,比如最大長度,空白提示文字等。

有時候我們有一些特屬的需要,要求只能在EditText中輸入特定個數的字元,比如社會安全號碼、手機號嗎等。這時候就可以通過android:maxLength屬性來設定最大輸入字元個數,比如android:maxLength=“4”就表示最多能輸入4個字元,再多了就輸入不進去了。 空白提示文字。有時候我們需要說明你定義的這個EditText是做什麼用的,比如讓輸入“使用者名稱”,或者輸入“電話號碼”等,但是你又不想在EditText前面加一個TextView來說明這是輸入“使用者名稱”的,因為這會使用一個TextView,那麼怎麼辦呢?EditText為我們提供了android:hint來設定當EditText內容為空白時顯示的文本,這個文本只在EditText為空白時顯示,你輸入字元的時候就消失了,不影響你的EditText的文本。。修改main.xml如下:
Xml代碼   android:layout_width="fill_parent" android:layout_height="fill_parent" > " br="">
看到了吧,顏色已經變了。。 還有一個比較實用的功能,就是設定EditText的不可編輯。設定android:enabled="false"可以實現不可編輯,可以獲得焦點。這時候我們看到EditText和一個TextView差不多:
實作類別似html中Textarea的文本域。在Android中沒有專門的文本域組件,但是可以通過設定EditText的高來實現同樣的文本域功能。修改main.xml如下:
Xml代碼   android:layout_width="fill_parent" android:layout_height="fill_parent" >
四:輸入特殊格式的字元

在我們開發程式的時候不免會輸入一些特屬個數的字元,比如密碼(輸入框的字元要加密顯示),電話號碼(比如數字和-),數字等,這些都算是一些特屬格式的字元,強大的EditText同樣為我們提供了輸入這些特屬格式字元的設定。

密碼文字框。密碼輸入也是Android應用常用的功能,通過配置EditText的android:password="true"就可以實現這一密碼輸入功能,修改main.xml如下:
Xml代碼   android:layout_width="fill_parent" android:layout_height="fill_parent" >
可以看到我們輸入的字元已經被“.”這樣的掩碼所代替。 手機中發簡訊打電話是必不可少的,所以用於專門輸入電話號碼的文字框也是大有用途,有了他我們對是否是電話號碼的校正就容易的多了(因為字元是正確的,只要校正格式).通過設定android:phoneNumber="true"就可以把EditText變成只接受電話號碼輸入的文字框,連軟鍵盤都已經變成撥號專用軟鍵盤了,所以不用再擔心輸入其他字元了。修改main.xml如下:
Xml代碼   android:layout_width="fill_parent" android:layout_height="fill_parent" >
注意看軟鍵盤,已經變成撥號專用的啦. 有時候我們只想輸入數字,不想輸入字母,EditText為我們提供了android:numeric來控制輸入的數字類型,一共有三種分別為integer(正整數)、signed(帶正負號的整數)和decimal(浮點數)。這裡以signed類型的為例,修改main.xml如下:
Xml代碼   android:layout_width="fill_parent" android:layout_height="fill_parent" >
注意這裡的軟鍵盤變成“數字鍵台”的變化.五:為文本指定特定的軟鍵盤類型

前面我們通過指定為電話號碼特定格式,然後鍵盤類型變成了撥號專用的鍵盤,這個是自動變的,其實我們也可以通過android:inputType來設定文本的類型,讓IME選擇合適的軟鍵盤的。。android:inputType有很多類型,這裡使用date類型來示範,修改main.xml如下:

Xml代碼   android:layout_width="fill_parent" android:layout_height="fill_parent" >

 

六:Enter鍵表徵圖的設定

軟鍵盤的Enter鍵預設顯示的是“完成”文本,我們知道按Enter建表示前置工作已經準備完畢了,要去什麼什麼啦。比如,在一個搜尋中,我們輸入要搜尋的文本,然後按Enter表示要去搜尋了,但是預設的Enter鍵顯示的是“完成”文本,看著不太合適,不符合搜尋的語義,如果能顯示“搜尋”兩個字或者顯示一個表示搜尋的表徵圖多好。事實證明我們的想法是合理的,Android也為我們提供的這樣的功能。通過設定android:imeOptions來改變預設的“完成”文本。這裡舉幾個常用的常量值:

actionUnspecified 未指定,對應常量EditorInfo.IME_ACTION_UNSPECIFIED.效果: actionNone 沒有動作,對應常量EditorInfo.IME_ACTION_NONE 效果: actionGo 去往,對應常量EditorInfo.IME_ACTION_GO 效果: actionSearch 搜尋,對應常量EditorInfo.IME_ACTION_SEARCH 效果: actionSend 發送,對應常量EditorInfo.IME_ACTION_SEND 效果: actionNext 下一個,對應常量EditorInfo.IME_ACTION_NEXT 效果: actionDone 完成,對應常量EditorInfo.IME_ACTION_DONE 效果:

下面已搜尋為例,示範一個執行個體,修改main.xml如下:

Xml代碼   android:layout_width="fill_parent" android:layout_height="fill_parent" >   Java代碼 packagecom.flysnow;   importandroid.app.Activity; importandroid.os.Bundle; importandroid.view.KeyEvent; importandroid.widget.EditText; importandroid.widget.TextView; importandroid.widget.Toast; importandroid.widget.TextView.OnEditorActionListener;   publicclassHelloEditTextextendsActivity{ /**Calledwhentheactivityisfirstcreated.*/ @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); EditTexteditText=(EditText)findViewById(R.id.edit_text); editText.setOnEditorActionListener(newOnEditorActionListener(){ @Override publicbooleanonEditorAction(TextViewv,intactionId,KeyEventevent){ Toast.makeText(HelloEditText.this,String.valueOf(actionId),Toast.LENGTH_SHORT).show(); returnfalse; } }); } }

運行程式,點擊斷行符號(也就是搜尋表徵圖軟鍵盤按鈕)會顯示該actionId.我們上面的每一個設定都會對應一個常量,這裡的actionId就是那個常量值。

七:EditText的取值、全選、部分選擇、擷取選中文本

下面通過一個例子來示範EditText的取值、全選、部分選擇和擷取選中文本.main.xml修改如下:

Xml代碼   android:layout_width="fill_parent" android:layout_height="fill_parent" >   Java代碼 packagecom.flysnow;   importandroid.app.Activity; importandroid.os.Bundle; importandroid.text.Editable; importandroid.text.Selection; importandroid.view.KeyEvent; importandroid.view.View; importandroid.view.View.OnClickListener; importandroid.widget.Button; importandroid.widget.EditText; importandroid.widget.TextView; importandroid.widget.Toast; importandroid.widget.TextView.OnEditorActionListener; /** *EditText示範 *@author飛雪無情 *@since2010-11-29 */ publicclassHelloEditTextextendsActivity{ /**Calledwhentheactivityisfirstcreated.*/ @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); finalEditTexteditText=(EditText)findViewById(R.id.edit_text); //監聽斷行符號鍵 editText.setOnEditorActionListener(newOnEditorActionListener(){ @Override publicbooleanonEditorAction(TextViewv,intactionId,KeyEventevent){ Toast.makeText(HelloEditText.this,String.valueOf(actionId),Toast.LENGTH_SHORT).show(); returnfalse; } }); //擷取EditText文本 ButtongetValue=(Button)findViewById(R.id.btn_get_value); getValue.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ Toast.makeText(HelloEditText.this,editText.getText().toString(),Toast.LENGTH_SHORT).show(); } }); //讓EditText全選 Buttonall=(Button)findViewById(R.id.btn_all); all.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ editText.selectAll(); } }); //從第2個字元開始選擇EditText文本 Buttonselect=(Button)findViewById(R.id.btn_select); select.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ Editableeditable=editText.getText(); Selection.setSelection(editable,1,editable.length()); } }); //擷取選中的文本 ButtongetSelect=(Button)findViewById(R.id.btn_get_select); getSelect.setOnClickListener(newOnClickListener(){ @Override publicvoidonClick(Viewv){ intstart=editText.getSelectionStart(); intend=editText.getSelectionEnd(); CharSequenceselectText=editText.getText().subSequence(start,end); Toast.makeText(HelloEditText.this,selectText,Toast.LENGTH_SHORT).show(); } }); } /** *交換兩個索引 *@paramstart開始索引 *@paramend結束索引 */ protectedvoidswitchIndex(intstart,intend){ inttemp=start; start=end; end=temp; } }

運行效果如下:



可以通過輸入文字和點擊下面的按鈕測試。

八:小結

這結詳細介紹了EditText的大部分特性和常用功能,如常用的密碼框,擷取值等等。這幾天忙的沒更新,這次更新個長的。可以夠消化一陣子的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.