EditText 大衆知識

介紹

A text field allows the user to type text into your app. It can be either single line or multi-line. Touching a text field places the cursor and automatically displays the keyboard. In addition to typing, text fields allow for a variety of other activities, such as text selection (cut, copy, paste) and data look-up via auto-completion.
You can add a text field to you layout with the EditText object. You should usually do so in your XML layout with a < EditText > element.javascript

文本區域給用戶輸入文字提供了方便,它能夠是單行的也能夠是多行的。觸摸一個文本區域獲取光標而且自動彈出鍵盤。除了能夠輸入文字,文本區域還能夠用來執行如文本選中(剪切,複製和粘貼)和經過自動補全實現的數據查詢等功能。你能夠經過在佈局中添加一個EditText對象來實現文本區域,固然也能夠在佈局文件中添加EditText Tag.
html

這裏寫圖片描述

指定鍵盤類型

Text fields can have different input types, such as number, date, password, or email address. The type determines what kind of characters are allowed inside the field, and may prompt the virtual keyboard to optimize its layout for frequently used characters.java

You can specify the type of keyboard you want for your EditText object with the android:inputType attribute. For example, if you want the user to input an email address, you should use the textEmailAddress input type:
文本區域有不一樣的輸入類型,如數字,日期,密碼或者郵箱地址。輸入類型決定了文本區域內容許輸入的字符類型,同時也提示着虛擬鍵盤給用戶展現更加經常使用的字符集合。咱們能夠經過使用 android:inputType 屬性來明確咱們的輸入框想要的鍵盤類型。例如,若是你想要輸入郵箱地址,你可使用textEmailAddress輸入類型。android

<EditText
    android:id="@+id/email_address"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="@string/email_hint"
    android:inputType="textEmailAddress" />複製代碼
android:inputType Notice
"none" 不彈出鍵盤
"text" 普通文本鍵盤
"textEmailAddress" 普通文本鍵盤,"@"
"textUri" 普通文本鍵盤,"/"
"number" 數字鍵盤
"phone" Phone-Style鍵盤

控制其餘行爲

android:inputType屬性不只能夠用來控制顯示特定的鍵盤類型,並且還能夠用來明確一些鍵盤的行爲,例如是否大寫,自動補全或者是拼寫建議等。android:inputType使用按位與的方式,因此能夠指定多種行爲數組

android:inputType Notice
"textCapSentences" 正常的文本鍵盤可是每一句話第一個字母大寫
"textCapWords" 正常文本鍵盤可是每個單詞的第一個字母大寫
"textAutoCorrect" 自動提示拼寫錯誤
"textPassword" 輸入的文字都變成點點
"textMultiLine" 容許輸入多行文本,能夠換行





關於android:inputType屬性有不少,上面都只是一些栗子,感受應該很全了,你們能夠自行研究。
app


指定鍵盤行爲

除了改變鍵盤的輸入類型,Android容許當用戶完成輸入指定一個動做,出現的操做指定按鈕的回車鍵和動做,如「搜索」或「發送」鍵。
例如:ide

<EditText
    android:id="@+id/search"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="@string/search_hint"
    android:inputType="text"
    android:imeOptions="actionSearch" />複製代碼

鍵盤會顯示出「搜索」按鈕,橫屏以後不只鍵盤會出現搜索按鈕,右側還會出現對應的字串
佈局



主要是對 android:imeOptions 屬性的使用
這麼多的行爲可供選擇,上面只是舉一個栗子

這裏寫圖片描述


對鍵盤中定義的行爲的響應

經過android:imeOptions 定義的行爲,咱們能夠對它定義的行爲做出響應.咱們可使用TextView.OnEditorActionListener來進行事件的監聽和處理。經過如 IME_ACTION_SEND 或者IME_ACTION_SEARCH等事件ID來針對不一樣的事件行爲作出不一樣的處理。
例如ui

EditText editText = (EditText) findViewById(R.id.search);
editText.setOnEditorActionListener(new OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        boolean handled = false;
        if (actionId == EditorInfo.IME_ACTION_SEND) {
            sendMessage();
            handled = true;
        }
        return handled;
    }
});複製代碼

自定義輸入完成後鍵盤行爲的標籤

android:imeActionLabel屬性就是用來設置這個內容的this

<EditText
    android:id="@+id/launch_codes"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="@string/enter_launch_codes"
    android:inputType="number"
    android:imeActionLabel="啓動" />複製代碼


自動補全建議

使用AutoCompleteTextView

佈局定義

<AutoCompleteTextView
        android:completionThreshold="1"//默認是2,這就是爲何默認輸入兩個字符才能顯示出提示信息的緣由
        android:id="@+id/autocomplete_country"
        android:layout_width="match_parent"
        android:text="@android:string/dialog_alert_title"
        android:layout_height="wrap_content" />複製代碼

代碼實現

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Get a reference to the AutoCompleteTextView in the layout
        AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_country);
        // Get the string array
        String[] countries = getResources().getStringArray(R.array.countries_array);
        // Create the adapter and set it to the AutoCompleteTextView
        ArrayAdapter<String> adapter =
                new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, countries);
        textView.setAdapter(adapter);//設置提示內容
    }複製代碼

提示數組

<string-array name="countries_array">
        <item>Afghanistan</item>
        <item>Albania</item>
        <item>Algeria</item>
        <item>American Samoa</item>
        <item>Andorra</item>
        <item>Angola</item>
        <item>Anguilla</item>
        <item>Antarctica</item>
    </string-array>複製代碼


備註

內容主要來自於Android官網教程:
developer.android.com/guide/topic…

相關文章
相關標籤/搜索