Android EditText詳解及示例代碼
EditText在API中的結(jié)構(gòu)
java.lang.Object
android.view.View
android.widget.TextView
android.widget.EditText
已知直接子類:
AutoCompleteTextView, ExtractEditText
已知間接子類:
MultiAutoCompleteTextView
EditText是TextView的直接子類 所以EditText會(huì)繼承父類TextView的一些方法。下面我用自己寫的一個(gè)Demo 和大家詳細(xì)的說明一下EditView的使用方法。
1.簡(jiǎn)單的EditText輸入框
非常簡(jiǎn)單,在layout布局中配置一下EditText 在配置一個(gè)Button 在代碼中監(jiān)聽Button 的事件 獲取當(dāng)前EditView中輸入的內(nèi)容并且顯示出來。
XML/HTML代碼
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/textviewll" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <EditText android:id="@+id/sample_edit_text0" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="簡(jiǎn)單的EditText輸入框"/> <Button android:id="@+id/sample_button0" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="確定"/> </LinearLayout>
Java代碼
public class SampleActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.sample); final EditText editText0 = (EditText)findViewById(R.id.sample_edit_text0); Button button0 = (Button)findViewById(R.id.sample_button0); button0.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { String str = editText0.getText().toString(); Toast.makeText(SampleActivity.this,str, Toast.LENGTH_LONG).show(); } }); super.onCreate(savedInstanceState); } }
2.限制EditText輸入框的內(nèi)容
在layout中配置信息
android:digits=”1234567890.+-*/%\n()”
限制輸入框中只能輸入自己定義的這些字符串 如果輸入其它將不予以顯示
android:phoneNumber=”true”
限制輸入框中只能輸入手機(jī)號(hào)碼
android:password=”true”
限制輸入框中輸入的任何內(nèi)容將以”*”符號(hào)來顯示
android:hint=”默認(rèn)文字”
輸入內(nèi)容前默認(rèn)顯示在輸入框中的文字
android:textColorHint=”#FF0000″
設(shè)置文字內(nèi)容顏色
android:enabled=”false”
設(shè)置輸入框不能被編輯
3.編輯框中顯示圖片
上一篇講TextView中就講過在TextView中添加圖片的方法,因?yàn)镋ditText是TextView的子類, 所以當(dāng)然也可以添加圖片了,只是一旦在EditText中添加圖片以后是不能刪除的,如圖所示我可以編輯圖片旁邊的內(nèi)容,寫入文字。
XML/HTML代碼
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/textviewll" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="在圖片下方" android:textColor="#FF0000" android:drawableBottom="@drawable/jay" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" > </EditText> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="在圖片上方" android:textColor="#FF0000" android:drawableTop="@drawable/jay" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" > </EditText> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="在圖片左邊" android:textColor="#FF0000" android:drawableLeft="@drawable/jay" android:layout_alignParentLeft="true" android:layout_centerVertical="true" > </EditText> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="在圖片右邊" android:textColor="#FF0000" android:drawableRight="@drawable/jay" android:layout_alignParentRight="true" android:layout_centerVertical="true" > </EditText> </RelativeLayout >
4.設(shè)置軟鍵盤的Enter鍵
如圖所示我們可以修改軟鍵盤的Enter按鈕的樣式,可以在代碼中監(jiān)聽 按鈕點(diǎn)擊事件。
Java代碼
package cn.m15.xys; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.view.inputmethod.EditorInfo; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import android.widget.TextView.OnEditorActionListener; public class KeyBoardActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.keyboard); EditText editText0 = (EditText)findViewById(R.id.txtTest0); editText0.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) { if (arg1 == EditorInfo.IME_ACTION_GO) { Toast.makeText(KeyBoardActivity.this, "你點(diǎn)了軟鍵盤'去往'按鈕", Toast.LENGTH_SHORT).show(); } return false; } }); EditText editText1 = (EditText)findViewById(R.id.txtTest1); editText1.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) { if (arg1 == EditorInfo.IME_ACTION_SEARCH) { Toast.makeText(KeyBoardActivity.this, "你點(diǎn)了軟鍵盤'搜索'按鈕", Toast.LENGTH_SHORT).show(); } return false; } }); EditText editText2 = (EditText)findViewById(R.id.txtTest2); editText2.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) { if (arg1 == EditorInfo.IME_ACTION_SEND) { Toast.makeText(KeyBoardActivity.this, "你點(diǎn)了軟鍵盤'發(fā)送'按鈕", Toast.LENGTH_SHORT).show(); } return false; } }); EditText editText3 = (EditText)findViewById(R.id.txtTest3); editText3.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) { if (arg1 == EditorInfo.IME_ACTION_NEXT) { Toast.makeText(KeyBoardActivity.this, "你點(diǎn)了軟鍵盤'下一個(gè)'按鈕", Toast.LENGTH_SHORT).show(); } return false; } }); EditText editText4 = (EditText)findViewById(R.id.txtTest4); editText4.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) { if (arg1 == EditorInfo.IME_ACTION_DONE) { Toast.makeText(KeyBoardActivity.this, "你點(diǎn)了軟鍵盤'完成'按鈕", Toast.LENGTH_SHORT).show(); } return false; } }); EditText editText5 = (EditText)findViewById(R.id.txtTest5); editText5.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) { if (arg1 == EditorInfo.IME_ACTION_UNSPECIFIED) { Toast.makeText(KeyBoardActivity.this, "你點(diǎn)了軟鍵盤'未指定'按鈕", Toast.LENGTH_SHORT).show(); } return false; } }); super.onCreate(savedInstanceState); } }
監(jiān)聽軟鍵盤的點(diǎn)擊事件
XML/HTML代碼
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/textviewll" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <EditText android:id="@+id/txtTest0" android:imeOptions="actionGo" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="特殊按鈕-去往" ></EditText> <EditText android:id="@+id/txtTest1" android:imeOptions="actionSearch" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="特殊按鈕-搜索" ></EditText> <EditText android:id="@+id/txtTest2" android:imeOptions="actionSend" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="特殊按鈕-發(fā)送" ></EditText> <EditText android:id="@+id/txtTest3" android:imeOptions="actionNext" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="特殊按鈕-下一個(gè)" ></EditText> <EditText android:id="@+id/txtTest4" android:imeOptions="actionDone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="特殊按鈕-完成" ></EditText> <EditText android:id="@+id/txtTest5" android:imeOptions="actionUnspecified" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="特殊按鈕-未指定" ></EditText> </LinearLayout>
5.監(jiān)聽軟鍵盤的按鍵事件
做項(xiàng)目的時(shí)候 有時(shí)候須要在用戶輸入內(nèi)容時(shí)做檢測(cè),比如如果用戶輸入不合法的內(nèi)容不予以顯示在EditText中, 這時(shí)候我就要用到addTextChangedListener 用它來監(jiān)聽用戶輸入狀態(tài)??梢栽诒O(jiān)聽中改變用戶輸入的內(nèi)容或者提示用戶輸入內(nèi)容不合法等等。 如圖所示我的每次輸入操作都可以被正常的監(jiān)聽出來,用戶輸入內(nèi)容的正常流程 beforeTextChanged() -》onTextChanged() -》afterTextChanged()然后是通知屏幕繪制 顯示在屏幕上 所以我們可以在這三個(gè)方法中來修改用戶輸入內(nèi)容 或者截取用戶輸入的內(nèi)容。
Java代碼
package cn.m15.xys; import android.app.Activity; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.widget.EditText; import android.widget.TextView; public class MonitorKeyActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.monitorkey); EditText editText = (EditText)findViewById(R.id.monitor_edit_text0); final TextView textView0 = (TextView)findViewById(R.id.monitor_text0); final TextView textView1 = (TextView)findViewById(R.id.monitor_text1); final TextView textView2 = (TextView)findViewById(R.id.monitor_text2); editText.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence text, int start, int before, int count) { //text 輸入框中改變后的字符串信息 //start 輸入框中改變后的字符串的起始位置 //before 輸入框中改變前的字符串的位置 默認(rèn)為0 //count 輸入框中改變后的一共輸入字符串的數(shù)量 textView1.setText("輸入后字符串 [ " + text.toString() + " ] 起始光標(biāo) [ " + start + " ] 輸入數(shù)量 [ " + count+" ]"); } @Override public void beforeTextChanged(CharSequence text, int start, int count,int after) { //text 輸入框中改變前的字符串信息 //start 輸入框中改變前的字符串的起始位置 //count 輸入框中改變前后的字符串改變數(shù)量一般為0 //after 輸入框中改變后的字符串與起始位置的偏移量 System.out.println(text.toString()); textView0.setText("輸入前字符串 [ " + text.toString() + " ]起始光標(biāo) [ " + start + " ]結(jié)束偏移量 [" + after + " ]"); } @Override public void afterTextChanged(Editable edit) { //edit 輸入結(jié)束呈現(xiàn)在輸入框中的信息 textView2.setText("輸入結(jié)束后的內(nèi)容為 [" + edit.toString()+" ] 即將顯示在屏幕上"); } }); super.onCreate(savedInstanceState); } }
XML/HTML代碼
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/textviewll" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/monitor_text0" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="18dip" android:textColor="#FF0000"/> <TextView android:id="@+id/monitor_text1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="18dip" android:textColor="#FF0000" /> <TextView android:id="@+id/monitor_text2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="18dip" android:textColor="#FF0000" /> <EditText android:id="@+id/monitor_edit_text0" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="監(jiān)聽軟鍵盤按鍵的輸入狀態(tài)"/> </LinearLayout>
希望通過此文,大家可以對(duì)Android RditText的知識(shí)掌握,謝謝大家對(duì)本站的支持!
- Android中EditText顯示明文與密碼的兩種方式
- Android UI設(shè)計(jì)系列之自定義EditText實(shí)現(xiàn)帶清除功能的輸入框(3)
- Android EditText常用屬性功能匯總
- Android中解決EditText放到popupWindow中,原有復(fù)制、粘貼、全選、選擇功能失效問題
- 全面解析Android中對(duì)EditText輸入實(shí)現(xiàn)監(jiān)聽的方法
- Android中EditText如何去除邊框添加下劃線
- Android EditText限制輸入字?jǐn)?shù)的方法
- Android編程開發(fā)之EditText中inputType屬性小結(jié)
- Android 帶有刪除按鈕的EditText
相關(guān)文章
Android基于訊飛語音SDK實(shí)現(xiàn)語音識(shí)別
本例子是一個(gè)調(diào)用訊飛語音識(shí)別SDK的例子源碼是一個(gè)最純凈的Demo比較容易看懂。實(shí)現(xiàn)的是點(diǎn)擊按鈕開始語音監(jiān)聽,手機(jī)需要聯(lián)網(wǎng),2/3G的均可,希望本文對(duì)大家學(xué)習(xí)Android有所幫助2016-06-06Flutter-AnimatedWidget組件源碼示例解析
這篇文章主要為大家介紹了Flutter-AnimatedWidget組件源碼示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06Android Rreact Native 常見錯(cuò)誤總結(jié)
這篇文章主要介紹了Android Rreact Native 常見錯(cuò)誤總結(jié)的相關(guān)資料,需要的朋友可以參考下2017-06-06Android自定義View實(shí)現(xiàn)拖動(dòng)選擇按鈕
這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)拖動(dòng)選擇按鈕的具體代碼,感興趣的小伙伴們可以參考一下2016-05-05Flutter實(shí)現(xiàn)牛頓擺動(dòng)畫效果的示例代碼
牛頓擺大家應(yīng)該都不陌生,也叫碰碰球、永動(dòng)球(理論情況下),那么今天我們用Flutter實(shí)現(xiàn)這么一個(gè)理論中的永動(dòng)球,可以作為加載Loading使用,需要的可以參考一下2022-04-04詳解Android studio 3+版本apk安裝失敗問題
這篇文章主要介紹了詳解Android studio 3+版本apk安裝失敗問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04Android studio將Module打包成Jar的方法
這篇文章主要介紹了Android studio將Module打包成Jar的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-10-10android 使用OkHttp上傳多張圖片的實(shí)現(xiàn)代碼
這篇文章主要介紹了android 使用OkHttp上傳多張圖片的相關(guān)資料,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-07-07