首頁 收藏 QQ群
 網(wǎng)站導(dǎo)航

ZNDS智能電視網(wǎng) 推薦當(dāng)貝市場

TV應(yīng)用下載 / 資源分享區(qū)

軟件下載 | 游戲 | 討論 | 電視計(jì)算器

綜合交流 / 評(píng)測 / 活動(dòng)區(qū)

交流區(qū) | 測硬件 | 網(wǎng)站活動(dòng) | Z幣中心

新手入門 / 進(jìn)階 / 社區(qū)互助

新手 | 你問我答 | 免費(fèi)刷機(jī)救磚 | ROM固件

查看: 17281|回復(fù): 0
上一主題 下一主題
[教程]

Android軟件開發(fā)之EditText 詳解(八)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2013-8-28 16:28 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
Android軟件開發(fā)之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.簡單的EditText輸入框   
   
       非常簡單,在layout布局中配置一下EditText 在配置一個(gè)Button 在代碼中監(jiān)聽Button 的事件 獲取當(dāng)前EditView中輸入的內(nèi)容并且顯示出來。   
     
  1. <?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="簡單的EditText輸入框"/>   
        <Button   
          android:id="@+id/sample_button0"   
          android:layout_width="fill_parent" android:layout_height="wrap_content"   
          android:text="確定"/>   
    </LinearLayout>
復(fù)制代碼
  
  1. 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);   
        }   
    }
復(fù)制代碼
2.限制EditText輸入框的內(nèi)容   
     
在layout中配置信息   
   
android:digits="1234567890.+-*/%
()"   
限制輸入框中只能輸入自己定義的這些字符串 如果輸入其它將不予以顯示   
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)容,寫入文字。   
   
     
  1. <?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 >
復(fù)制代碼
     
4.設(shè)置軟鍵盤的Enter鍵   
   
如圖所示我們可以修改軟鍵盤的Enter按鈕的樣式,可以在代碼中監(jiān)聽 按鈕點(diǎn)擊事件。   
     
  1. 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);   
        }   
    }   
復(fù)制代碼
監(jiān)聽軟鍵盤的點(diǎn)擊事件   
  1. <?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>
復(fù)制代碼
5.監(jiān)聽軟鍵盤的按鍵事件   
   
        做項(xiàng)目的時(shí)候 有時(shí)候須要在用戶輸入內(nèi)容時(shí)做檢測,比如如果用戶輸入不合法的內(nèi)容不予以顯示在EditText中, 這時(shí)候我就要用到addTextChangedListener 用它來監(jiān)聽用戶輸入狀態(tài)。可以在監(jiān)聽中改變用戶輸入的內(nèi)容或者提示用戶輸入內(nèi)容不合法等等。 如圖所示我的每次輸入操作都可以被正常的監(jiān)聽出來,用戶輸入內(nèi)容的正常流程 beforeTextChanged()  -》onTextChanged()  -》afterTextChanged()然后是通知屏幕繪制 顯示在屏幕上 所以我們可以在這三個(gè)方法中來修改用戶輸入內(nèi)容 或者截取用戶輸入的內(nèi)容。   
  1. 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);   
        }   
    }   
復(fù)制代碼
  
  1. <?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>
復(fù)制代碼
最后如果你還是覺得我寫的不夠詳細(xì) 看的不夠爽 不要緊我把源代碼的下載地址貼出來 歡迎大家一起討論學(xué)習(xí)   
第五講EditText.rar(143.88 KB, 下載次數(shù): 19)[/I]2011-9-2 23:03 上傳點(diǎn)擊文件名   下載積分: 下載豆 -2

上一篇:Android應(yīng)用框架原理與程序設(shè)計(jì)(pdf資料)
下一篇:android應(yīng)用源碼,不過忘了這個(gè)是哪個(gè)版本了
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

Archiver|新帖|標(biāo)簽|軟件|Sitemap|ZNDS智能電視網(wǎng) ( 蘇ICP備2023012627號(hào) )

網(wǎng)絡(luò)信息服務(wù)信用承諾書 | 增值電信業(yè)務(wù)經(jīng)營許可證:蘇B2-20221768 丨 蘇公網(wǎng)安備 32011402011373號(hào)

GMT+8, 2024-12-27 23:51 , Processed in 0.083744 second(s), 17 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報(bào):report#znds.com (請將#替換為@)

© 2007-2024 ZNDS.Com

快速回復(fù) 返回頂部 返回列表