一:輸入特殊格式的字符
在我們開發(fā)程序的時候不免會輸入一些特屬個數(shù)的字符,比如密碼(輸入框的字符要加密顯示),電話號碼(比如數(shù)字和-),數(shù)字等,這些都算是一些特屬格式的字符,強(qiáng)大的EditText同樣為我們提供了輸入這些特屬格式字符的設(shè)置。 1.密碼文本框。密碼輸入也是Android應(yīng)用常用的功能,通過配置EditText的android:password="true"就可以實(shí)現(xiàn)這一密碼輸入功能,修改main.xml如下:
Xml代碼
1.<? xml version = "1.0" encoding = "utf-8" ?> 2.< LinearLayout xmlns:android = "http://schemas./apk/res/android" 3. android:orientation = "vertical" 4. android:layout_width = "fill_parent" 5. android:layout_height = "fill_parent" 6. > 7.< EditText 8. android:id = "@+id/edit_text" 9. android:layout_width = "fill_parent" 10. android:layout_height = "wrap_content" 11. android:password = "true" /> 12.</ LinearLayout > <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas./apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <EditText android:id="@+id/edit_text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:password="true"/> </LinearLayout> 運(yùn)行效果如下: 可以看到我們輸入的字符已經(jīng)被“.”這樣的掩碼所代替。 2.手機(jī)中發(fā)短信打電話是必不可少的,所以用于專門輸入電話號碼的文本框也是大有用途,有了他我們對是否是電話號碼的校驗(yàn)就容易的多了(因?yàn)樽址钦_的,只要校驗(yàn)格式 ).通過設(shè)置android:phoneNumber="true"就可以把EditText變成只接受電話號碼輸入的文本框,連軟鍵盤都已經(jīng)變成撥號專用軟鍵盤了,所以不用再擔(dān)心輸入其他字符了。修改main.xml如下: Xml代碼
1.<? xml version = "1.0" encoding = "utf-8" ?> 2.< LinearLayout xmlns:android = "http://schemas./apk/res/android" 3. android:orientation = "vertical" 4. android:layout_width = "fill_parent" 5. android:layout_height = "fill_parent" 6. > 7.< EditText 8. android:id = "@+id/edit_text" 9. android:layout_width = "fill_parent" 10. android:layout_height = "wrap_content" 11. android:phoneNumber = "true" /> 12.</ LinearLayout > <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas./apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <EditText android:id="@+id/edit_text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:phoneNumber="true"/> </LinearLayout> 運(yùn)行程序效果如下: 注意看軟鍵盤,已經(jīng)變成撥號專用的啦. 3.有時候我們只想輸入數(shù)字,不想輸入字母,EditText為我們提供了 android:numeric來控制輸入的數(shù)字類型,一共有三種分別為integer(正整數(shù))、signed(帶符號整數(shù))和decimal(浮點(diǎn)數(shù))。這里以signed類型的為例,修改main.xml如下: Xml代碼
1.<? xml version = "1.0" encoding = "utf-8" ?> 2.< LinearLayout xmlns:android = "http://schemas./apk/res/android" 3. android:orientation = "vertical" 4. android:layout_width = "fill_parent" 5. android:layout_height = "fill_parent" 6. > 7.< EditText 8. android:id = "@+id/edit_text" 9. android:layout_width = "fill_parent" 10. android:layout_height = "wrap_content" 11. android:numeric = "signed" /> 12.</ LinearLayout > <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas./apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <EditText android:id="@+id/edit_text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:numeric="signed"/> </LinearLayout> 運(yùn)行效果如下: 注意這里的軟鍵盤變成“數(shù)字鍵盤”的變化. 二:為文本指定特定的軟鍵盤類型 前面我們通過指定為電話號碼特定格式,然后鍵盤類型變成了撥號專用的鍵盤,這個是自動變的,其實(shí)我們也可以通 過android:inputType來設(shè)置文本的類型,讓輸入法選擇合適的軟鍵盤的。。android:inputType有很多類型,這里使用date類型來演示,修改main.xml如下: Xml代碼 1.<? xml version = "1.0" encoding = "utf-8" ?> 2.< LinearLayout xmlns:android = "http://schemas./apk/res/android" 3. android:orientation = "vertical" 4. android:layout_width = "fill_parent" 5. android:layout_height = "fill_parent" 6. > 7.< EditText 8. android:id = "@+id/edit_text" 9. android:layout_width = "fill_parent" 10. android:layout_height = "wrap_content" 11. android:inputType = "date" /> 12.</ LinearLayout > <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas./apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <EditText android:id="@+id/edit_text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputType="date"/> </LinearLayout> 運(yùn)行效果如下: 三:Enter鍵圖標(biāo)的設(shè)置
軟鍵盤的Enter 鍵默認(rèn)顯示的是“完成”文本,我們知道按Enter建表示前置工作已經(jīng)準(zhǔn)備完畢了,要去什么什么啦。比如,在一個搜索中,我們輸入要搜索的文本,然后按 Enter表示要去搜索了,但是默認(rèn)的Enter鍵顯示的是“完成”文本,看著不太合適,不符合搜索的語義,如果能顯示“搜索”兩個字或者顯示一個表示搜索的圖標(biāo)多好。事實(shí)證明我們的想法是合理的,Android也為我們提供的這樣的功能。通過設(shè)置android:imeOptions來改變默認(rèn)的“完成”文本。這里舉幾個常用的常量值: 1.actionUnspecified 未指定,對應(yīng)常量EditorInfo.IME_ACTION_UNSPECIFIED.效果:
2.actionNone 沒有動作,對應(yīng)常量EditorInfo.IME_ACTION_NONE 效果: 3.actionGo 去往,對應(yīng)常量EditorInfo.IME_ACTION_GO 效果: 4.actionSearch 搜索,對應(yīng)常量EditorInfo.IME_ACTION_SEARCH 效果: 5.actionSend 發(fā)送,對應(yīng)常量EditorInfo.IME_ACTION_SEND 效果: 6.actionNext 下一個,對應(yīng)常量EditorInfo.IME_ACTION_NEXT 效果: 7.actionDone 完成,對應(yīng)常量EditorInfo.IME_ACTION_DONE 效果: 下面已搜索為例,演示一個實(shí)例,修改main.xml如下: Xml代碼
1.<? xml version = "1.0" encoding = "utf-8" ?> 2.< LinearLayout xmlns:android = "http://schemas./apk/res/android" 3. android:orientation = "vertical" 4. android:layout_width = "fill_parent" 5. android:layout_height = "fill_parent" 6. > 7.< EditText 8. android:id = "@+id/edit_text" 9. android:layout_width = "fill_parent" 10. android:layout_height = "wrap_content" 11. android:imeOptions = "actionSearch" /> 12.</ LinearLayout > <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas./apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <EditText android:id="@+id/edit_text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:imeOptions="actionSearch"/> </LinearLayout> 修改HelloEditText如下: Java代碼
1.package com.flysnow; 2. 3.import android.app.Activity; 4.import android.os.Bundle; 5.import android.view.KeyEvent; 6.import android.widget.EditText; 7.import android.widget.TextView; 8.import android.widget.Toast; 9.import android.widget.TextView.OnEditorActionListener; 10. 11.public class HelloEditText extends Activity { 12. /** Called when the activity is first created. */ 13. @Override 14. public void onCreate(Bundle savedInstanceState) { 15. super .onCreate(savedInstanceState); 16. setContentView(R.layout.main); 17. EditText editText=(EditText)findViewById(R.id.edit_text); 18. editText.setOnEditorActionListener(new OnEditorActionListener() { 19. @Override 20. public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 21. Toast.makeText(HelloEditText.this , String.valueOf(actionId), Toast.LENGTH_SHORT).show(); 22. return false ; 23. } 24. }); 25. } 26.} package com.flysnow; import android.app.Activity;
import android.os.Bundle; import android.view.KeyEvent; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import android.widget.TextView.OnEditorActionListener; public class HelloEditText extends Activity {
/** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); EditText editText=(EditText)findViewById(R.id.edit_text); editText.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { Toast.makeText(HelloEditText.this, String.valueOf(actionId), Toast.LENGTH_SHORT).show(); return false; } }); } } 運(yùn)行程序,點(diǎn)擊回車(也就是搜索圖標(biāo)軟鍵盤按鈕)會顯示該actionId.我們上面的每一個設(shè)置都會對應(yīng)一個常量,這里的actionId就是那個常量值。 |
|