Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android應用開發教程之五:EditText詳解

Android應用開發教程之五:EditText詳解

編輯:關於android開發

  EditText在API中的結構

  java.lang.Object

  android.view.View

  android.widget.TextView

  android.widget.EditText

  已知直接子類:

  AutoCompleteTextView, ExtractEditText

  已知間接子類:

  MultiAutoCompleteTextView

  EditText是TextView的直接子類 所以EditText會繼承父類TextView的一些方法。下面我用自己寫的一個Demo 和大家詳細的說明一下EditView的使用方法。

Android應用開發教程之五:EditText詳解

  1.簡單的EditText輸入框

  非常簡單,在layout布局中配置一下EditText 在配置一個Button 在代碼中監聽Button 的事件 獲取當前EditView中輸入的內容並且顯示出來。

Android應用開發教程之五:EditText詳解

XML/HTML代碼
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:id="@+id/textviewll"  
  4.     android:orientation="vertical" android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent">  
  6.     <EditText  
  7.       android:id="@+id/sample_edit_text0"  
  8.       android:layout_width="fill_parent"  
  9.       android:layout_height="wrap_content"  
  10.       android:text="簡單的EditText輸入框"/>  
  11.     <Button  
  12.       android:id="@+id/sample_button0"  
  13.       android:layout_width="fill_parent" android:layout_height="wrap_content"  
  14.       android:text="確定"/>  
  15. </LinearLayout>  
Java代碼
  1. public class SampleActivity extends Activity {  
  2.     @Override  
  3.     protected void onCreate(Bundle savedInstanceState) {  
  4.     setContentView(R.layout.sample);  
  5.    
  6.     final EditText editText0 = (EditText)findViewById(R.id.sample_edit_text0);  
  7.    
  8.     Button button0 = (Button)findViewById(R.id.sample_button0);  
  9.    
  10.     button0.setOnClickListener(new OnClickListener() {  
  11.    
  12.         @Override  
  13.         public void onClick(View arg0) {  
  14.         String str = editText0.getText().toString();  
  15.         Toast.makeText(SampleActivity.this,str, Toast.LENGTH_LONG).show();  
  16.         }  
  17.     });  
  18.    
  19.     super.onCreate(savedInstanceState);  
  20.     }  
  21. }  

  2.限制EditText輸入框的內容

Android應用開發教程之五:EditText詳解

  在layout中配置信息

  android:digits=”1234567890.+-*/%\n()”

  限制輸入框中只能輸入自己定義的這些字符串 如果輸入其它將不予以顯示

  android:phoneNumber=”true”

  限制輸入框中只能輸入手機號碼

  android:password=”true”

  限制輸入框中輸入的任何內容將以”*”符號來顯示

  android:hint=”默認文字”

  輸入內容前默認顯示在輸入框中的文字

  android:textColorHint=”#FF0000″

  設置文字內容顏色

  android:enabled=”false”

  設置輸入框不能被編輯

Android應用開發教程之五:EditText詳解

  3.編輯框中顯示圖片

  上一篇講TextView中就講過在TextView中添加圖片的方法,因為EditText是TextView的子類, 所以當然也可以添加圖片了,只是一旦在EditText中添加圖片以後是不能刪除的,如圖所示我可以編輯圖片旁邊的內容,寫入文字。

Android應用開發教程之五:EditText詳解

XML/HTML代碼
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:id="@+id/textviewll"  
  4.     android:orientation="vertical"  
  5.     android:layout_width="fill_parent"  
  6.     android:layout_height="fill_parent"  
  7.     >  
  8.     <EditText  
  9.               android:layout_width="wrap_content"  
  10.               android:layout_height="wrap_content"  
  11.               android:text="在圖片下方"  
  12.               android:textColor="#FF0000"  
  13.               android:drawableBottom="@drawable/jay"  
  14.               android:layout_alignParentTop="true"  
  15.               android:layout_centerHorizontal="true"  
  16.               >  
  17.      </EditText>  
  18.    
  19.      <EditText  
  20.               android:layout_width="wrap_content"  
  21.               android:layout_height="wrap_content"  
  22.               android:text="在圖片上方"  
  23.               android:textColor="#FF0000"  
  24.               android:drawableTop="@drawable/jay"  
  25.               android:layout_alignParentBottom="true"  
  26.               android:layout_centerHorizontal="true"  
  27.               >  
  28.      </EditText>  
  29.      <EditText  
  30.               android:layout_width="wrap_content"  
  31.               android:layout_height="wrap_content"  
  32.               android:text="在圖片左邊"  
  33.               android:textColor="#FF0000"  
  34.               android:drawableLeft="@drawable/jay"  
  35.              android:layout_alignParentLeft="true"  
  36.               android:layout_centerVertical="true"  
  37.               >  
  38.      </EditText>  
  39.      <EditText  
  40.               android:layout_width="wrap_content"  
  41.               android:layout_height="wrap_content"  
  42.               android:text="在圖片右邊"  
  43.               android:textColor="#FF0000"  
  44.               android:drawableRight="@drawable/jay"  
  45.               android:layout_alignParentRight="true"  
  46.               android:layout_centerVertical="true"  
  47.               >  
  48.      </EditText>   
  49.    
  50. </RelativeLayout >  

  4.設置軟鍵盤的Enter鍵

  如圖所示我們可以修改軟鍵盤的Enter按鈕的樣式,可以在代碼中監聽 按鈕點擊事件。

Android應用開發教程之五:EditText詳解

Java代碼
  1. package cn.m15.xys;  
  2.    
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.KeyEvent;  
  6. import android.view.inputmethod.EditorInfo;  
  7. import android.widget.EditText;  
  8. import android.widget.TextView;  
  9. import android.widget.Toast;  
  10. import android.widget.TextView.OnEditorActionListener;  
  11.    
  12. public class KeyBoardActivity extends Activity {  
  13.     @Override  
  14.     protected void onCreate(Bundle savedInstanceState) {  
  15.     setContentView(R.layout.keyboard);  
  16.    
  17.     EditText editText0 = (EditText)findViewById(R.id.txtTest0);  
  18.    
  19.     editText0.setOnEditorActionListener(new OnEditorActionListener() {  
  20.    
  21.         @Override  
  22.         public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) {  
  23.         if (arg1 == EditorInfo.IME_ACTION_GO) {  
  24.             Toast.makeText(KeyBoardActivity.this, "你點了軟鍵盤'去往'按鈕",  
  25.                 Toast.LENGTH_SHORT).show();  
  26.         }  
  27.         return false;  
  28.         }  
  29.     });  
  30.     EditText editText1 = (EditText)findViewById(R.id.txtTest1);  
  31.    
  32.     editText1.setOnEditorActionListener(new OnEditorActionListener() {  
  33.    
  34.         @Override  
  35.         public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) {  
  36.         if (arg1 == EditorInfo.IME_ACTION_SEARCH) {  
  37.             Toast.makeText(KeyBoardActivity.this, "你點了軟鍵盤'搜索'按鈕",  
  38.                 Toast.LENGTH_SHORT).show();  
  39.         }  
  40.         return false;  
  41.         }  
  42.     });  
  43.     EditText editText2 = (EditText)findViewById(R.id.txtTest2);  
  44.    
  45.     editText2.setOnEditorActionListener(new OnEditorActionListener() {  
  46.    
  47.         @Override  
  48.         public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) {  
  49.         if (arg1 == EditorInfo.IME_ACTION_SEND) {  
  50.             Toast.makeText(KeyBoardActivity.this, "你點了軟鍵盤'發送'按鈕",  
  51.                 Toast.LENGTH_SHORT).show();  
  52.         }  
  53.         return false;  
  54.         }  
  55.     });  
  56.     EditText editText3 = (EditText)findViewById(R.id.txtTest3);  
  57.    
  58.     editText3.setOnEditorActionListener(new OnEditorActionListener() {  
  59.    
  60.         @Override  
  61.         public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) {  
  62.         if (arg1 == EditorInfo.IME_ACTION_NEXT) {  
  63.             Toast.makeText(KeyBoardActivity.this, "你點了軟鍵盤'下一個'按鈕",  
  64.                 Toast.LENGTH_SHORT).show();  
  65.         }  
  66.         return false;  
  67.         }  
  68.     });  
  69.     EditText editText4 = (EditText)findViewById(R.id.txtTest4);  
  70.    
  71.     editText4.setOnEditorActionListener(new OnEditorActionListener() {  
  72.    
  73.         @Override  
  74.         public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) {  
  75.         if (arg1 == EditorInfo.IME_ACTION_DONE) {  
  76.             Toast.makeText(KeyBoardActivity.this, "你點了軟鍵盤'完成'按鈕",  
  77.                 Toast.LENGTH_SHORT).show();  
  78.         }  
  79.         return false;  
  80.         }  
  81.     });  
  82.     EditText editText5 = (EditText)findViewById(R.id.txtTest5);  
  83.    
  84.     editText5.setOnEditorActionListener(new OnEditorActionListener() {  
  85.    
  86.         @Override  
  87.         public boolean onEditorAction(TextView arg0, int arg1, KeyEvent arg2) {  
  88.         if (arg1 == EditorInfo.IME_ACTION_UNSPECIFIED) {  
  89.             Toast.makeText(KeyBoardActivity.this, "你點了軟鍵盤'未指定'按鈕",  
  90.                 Toast.LENGTH_SHORT).show();  
  91.         }  
  92.         return false;  
  93.         }  
  94.     });  
  95.     super.onCreate(savedInstanceState);  
  96.     }  
  97. }  

  監聽軟鍵盤的點擊事件

XML/HTML代碼
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:id="@+id/textviewll"  
  4.     android:orientation="vertical" android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent">  
  6.     <EditText android:id="@+id/txtTest0"  
  7.      android:imeOptions="actionGo"  
  8.      android:layout_width="fill_parent"  
  9.      android:layout_height="wrap_content"  
  10.      android:hint="特殊按鈕-去往"  
  11.      ></EditText>  
  12.     <EditText android:id="@+id/txtTest1"  
  13.      android:imeOptions="actionSearch"  
  14.      android:layout_width="fill_parent"  
  15.      android:layout_height="wrap_content"  
  16.      android:hint="特殊按鈕-搜索"  
  17.      ></EditText>  
  18.     <EditText android:id="@+id/txtTest2"  
  19.      android:imeOptions="actionSend"  
  20.      android:layout_width="fill_parent"  
  21.      android:layout_height="wrap_content"  
  22.      android:hint="特殊按鈕-發送"  
  23.      ></EditText>  
  24.     <EditText android:id="@+id/txtTest3"  
  25.      android:imeOptions="actionNext"  
  26.      android:layout_width="fill_parent"  
  27.      android:layout_height="wrap_content"  
  28.      android:hint="特殊按鈕-下一個"  
  29.      ></EditText>  
  30.     <EditText android:id="@+id/txtTest4"  
  31.      android:imeOptions="actionDone"  
  32.      android:layout_width="fill_parent"  
  33.      android:layout_height="wrap_content"  
  34.      android:hint="特殊按鈕-完成"  
  35.      ></EditText>  
  36.     <EditText android:id="@+id/txtTest5"  
  37.      android:imeOptions="actionUnspecified"  
  38.      android:layout_width="fill_parent"  
  39.      android:layout_height="wrap_content"  
  40.      android:hint="特殊按鈕-未指定"  
  41.      ></EditText>  
  42.    
  43. </LinearLayout>  

  5.監聽軟鍵盤的按鍵事件

  做項目的時候 有時候須要在用戶輸入內容時做檢測,比如如果用戶輸入不合法的內容不予以顯示在EditText中, 這時候我就要用到addTextChangedListener 用它來監聽用戶輸入狀態。可以在監聽中改變用戶輸入的內容或者提示用戶輸入內容不合法等等。 如圖所示我的每次輸入操作都可以被正常的監聽出來,用戶輸入內容的正常流程 beforeTextChanged()  -》onTextChanged()  -》afterTextChanged()然後是通知屏幕繪制 顯示在屏幕上 所以我們可以在這三個方法中來修改用戶輸入內容 或者截取用戶輸入的內容。

Android應用開發教程之五:EditText詳解

Java代碼
  1. package cn.m15.xys;  
  2.    
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.text.Editable;  
  6. import android.text.TextWatcher;  
  7. import android.widget.EditText;  
  8. import android.widget.TextView;  
  9.    
  10. public class MonitorKeyActivity extends Activity {  
  11.     @Override  
  12.     protected void onCreate(Bundle savedInstanceState) {  
  13.     setContentView(R.layout.monitorkey);  
  14.     EditText editText = (EditText)findViewById(R.id.monitor_edit_text0);  
  15.     final TextView textView0 = (TextView)findViewById(R.id.monitor_text0);  
  16.     final TextView textView1 = (TextView)findViewById(R.id.monitor_text1);  
  17.     final TextView textView2 = (TextView)findViewById(R.id.monitor_text2);  
  18.    
  19.     editText.addTextChangedListener(new TextWatcher() {  
  20.    
  21.         @Override  
  22.         public void onTextChanged(CharSequence text, int start, int before, int count) {  
  23.                 //text  輸入框中改變後的字符串信息  
  24.         //start 輸入框中改變後的字符串的起始位置  
  25.         //before 輸入框中改變前的字符串的位置 默認為0  
  26.         //count 輸入框中改變後的一共輸入字符串的數量  
  27.         textView1.setText("輸入後字符串 [ " + text.toString() + " ] 起始光標 [ " + start + " ] 輸入數量 [ " + count+" ]");  
  28.    
  29.         }  
  30.    
  31.         @Override  
  32.         public void beforeTextChanged(CharSequence text, int start, int count,int after) {  
  33.         //text  輸入框中改變前的字符串信息  
  34.         //start 輸入框中改變前的字符串的起始位置  
  35.         //count 輸入框中改變前後的字符串改變數量一般為0  
  36.         //after 輸入框中改變後的字符串與起始位置的偏移量  
  37.         System.out.println(text.toString());  
  38.         textView0.setText("輸入前字符串 [ " + text.toString() + " ]起始光標 [ " + start + " ]結束偏移量  [" + after + " ]");  
  39.         }  
  40.    
  41.         @Override  
  42.         public void afterTextChanged(Editable edit) {  
  43.         //edit  輸入結束呈現在輸入框中的信息  
  44.         textView2.setText("輸入結束後的內容為 [" + edit.toString()+" ] 即將顯示在屏幕上");  
  45.         }  
  46.     });  
  47.    
  48.     super.onCreate(savedInstanceState);  
  49.     }  
  50. }  
XML/HTML代碼
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:id="@+id/textviewll"  
  4.     android:orientation="vertical" android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent">  
  6.     <TextView  
  7.       android:id="@+id/monitor_text0"  
  8.       android:layout_width="fill_parent"  
  9.       android:layout_height="wrap_content"  
  10.       android:textSize="18dip"  
  11.       android:textColor="#FF0000"/>  
  12.     <TextView  
  13.       android:id="@+id/monitor_text1"  
  14.       android:layout_width="fill_parent"  
  15.       android:layout_height="wrap_content"  
  16.       android:textSize="18dip"  
  17.       android:textColor="#FF0000"  
  18.       />  
  19.     <TextView  
  20.       android:id="@+id/monitor_text2"  
  21.       android:layout_width="fill_parent"  
  22.       android:layout_height="wrap_content"  
  23.       android:textSize="18dip"  
  24.       android:textColor="#FF0000"  
  25.       />  
  26.     <EditText  
  27.       android:id="@+id/monitor_edit_text0"  
  28.       android:layout_width="fill_parent"  
  29.       android:layout_height="wrap_content"  
  30.       android:hint="監聽軟鍵盤按鍵的輸入狀態"/>  
  31. </LinearLayout>  

  最後如果你還是覺得我寫的不夠詳細 看的不夠爽 不要緊我把源代碼的下載地址貼出來 歡迎大家一起討論學習

  下載地址:http://vdisk.weibo.com/s/a9lpP

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved