第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開發(fā)者教程

Android 入門教程

菜單類控件
菜單:Menu
并發(fā)編程
多線程

在上一節(jié)我們講到了 TextView,它用來顯示一段文本。這一節(jié)可以算作成是 TextView 的延續(xù),因為從功能上 EditText 在 TextView 的基礎(chǔ)之上多了一個輸入的功能;從代碼上 EditText 是繼承自 TextView 的子類,所以我們可以大膽的理解為, EditText 是一種帶有輸入功能的高級 TextView。

1. EditText 的特性

在學(xué)習(xí)過 TextView 之后,EditText 就非常好理解了,它提供了一種文本輸入的方式,內(nèi)部可以支持單行或者多行輸入,并且提供一個浮標(biāo),讓用戶選擇輸入的位置,通常情況下點(diǎn)擊 EditText 會自動展示出手機(jī)的輸入鍵盤?;叵胍幌?,我們前面在什么場景下有用到過?

2. EditText 的屬性

2.1 android:inputType

設(shè)置 EditText 的輸入類型,這樣用戶就只能按照你預(yù)設(shè)的規(guī)范進(jìn)行輸入。
作為用戶有沒有發(fā)現(xiàn)在登錄的時候,在密碼的輸入框輸入任何字符都會顯示成“*”或者“·”,然后輸入身份證的時候只能是數(shù)字加上“X”。這個功能就需要用到inputType屬性了,系統(tǒng)支持的可配置值如下:

  • text
    輸入文本類型
  • textAutoComplete
    文本自動補(bǔ)全,類似在百度搜索框中搜索的時候,只需要輸入一兩個字會系統(tǒng)自動幫你預(yù)測并補(bǔ)全剩余字符。
  • textAutoCorrect
    讓EditText對用戶的輸入進(jìn)行自動矯正
  • textPassword
    輸入為密碼類型,會在輸入框中顯示“*”或者“·”
  • textUri
    uri類型的文本
  • textEmailAddress
    email類型的文本
  • phone
    電話號碼類型,此模式下只支持輸入數(shù)字
  • datetime
    日期類型

以上是常用類型,除此之外還有很多很多,具體的屬性可以查閱官網(wǎng):inputType 類型列表
我們也可以同時設(shè)置多個屬性,只需要在多個屬性中間用“|”分隔,比如:

android:inputType="textCapSentences|textAutoCorrect"

2.2 android:imeOptions

這是一個非常好用的屬性,大家在用 Andorid 系統(tǒng)的時候應(yīng)該會發(fā)現(xiàn),在大多數(shù)輸入法的右下角,會留一個按鍵。當(dāng)你在聊天的時候,右下角按鍵是“發(fā)送”;當(dāng)你在登錄的時候,它會是“登錄”;當(dāng)你在填寫表格的時候,會是“下一頁”;當(dāng)你… …如何讓輸入法如此“智能”的跟隨場景變化,就需要用到 imeOptions 屬性了。

2.3 android:minLines

設(shè)置最小行數(shù)。通過設(shè)置 minLines 為 n,可以讓 EditText 的高度是 2 倍的行高,即使你沒有輸入任何字符,EditText 也會是2倍行高。

2.4 android:maxLines

設(shè)置 EditText 最大可容納的行數(shù)。如果設(shè)為 n,那么 EditText在輸入字符超過 n 行之后高度就不會在自動擴(kuò)張,而改為采用一個滾動條的形式,通過拖動滾動條來查看前后的內(nèi)容,通常用這個屬性還限制 EditText 的最大高度。

2.5 android:hint

設(shè)置 EditText 提示符。如果 EditText 沒有輸入字符,會默認(rèn)顯示hint設(shè)置的字符,一旦有輸入則會清空 hint,通常用來提示用戶當(dāng)前 EditText 應(yīng)該輸入什么內(nèi)容。

2.6 android:maxLength

設(shè)置最大字符容量。這個比較好理解,就是限制用戶可以輸入多少個字符。

3. 通過 xml 定義一個 EditText

<EditText xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/input_password"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="請輸入密碼"
    android:imeOptions="actionDone"
    android:inputType="textPassword"
    android:maxLines="5"
    android:textSize="20sp" />

代碼比較簡單,主要實現(xiàn)了以下幾個屬性:

  • android:hint="請輸入密碼"
    用來提示用戶,本輸入框的功能是輸入密碼,當(dāng)你點(diǎn)擊EditText往里面輸入字符之后,提示就會消失。
  • android:inputType="textPassword"
    設(shè)置當(dāng)前輸入的類為密碼,那么當(dāng)用戶輸入文本后,系統(tǒng)會用“*”或者“·”替代。
  • android:maxLines="3"
    設(shè)置當(dāng)前的輸入框最多使能容納3行內(nèi)人,如果多余 3 行,則會采用滾動條的形式上下滑動。
    效果如下:

EditText示例

4. 獲取用戶的輸入信息

TextView 的功能只是作為信息輸出展示給用戶,而 EditText 除了可以展示信息之外,還需要從用戶那里得到輸入的內(nèi)容,我們可以通過getText().toString()獲取到 EditText 的輸入信息。
修改一下布局文件,添加一個 button 來觸發(fā)獲取的時機(jī):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="20dp">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:text="確定" />

    <EditText
        android:id="@+id/input_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginRight="10dp"
        android:layout_toLeftOf="@id/button"
        android:hint="請輸入密碼"
        android:imeOptions="actionDone"
        android:inputType="textPassword"
        android:maxLines="5"
        android:textSize="20sp" />

</RelativeLayout>

我們在第一個示例代碼基礎(chǔ)之上,加了一個 Button,并放在了一個 RelativeLayout 中(大家可以思考一下這里為什么要用 RelativeLayout,如果用 LinearLayout 能實現(xiàn)嗎?),我們希望用 Button 作為獲取 EditText 內(nèi)容的觸發(fā)事件,當(dāng)點(diǎn)擊 Button 的時候,我們獲取用戶在 EditText 中輸入的內(nèi)容,并打印到屏幕上驗證結(jié)果。

相關(guān) Java 代碼如下:

final EditText editText = findViewById(R.id.input_password);
        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, editText.getText(), Toast.LENGTH_SHORT).show();
            }
        });

首先我們根據(jù) ID 拿到 EditText 和 Button 的實例,接著對 Button 設(shè)置一個監(jiān)聽器(關(guān)于 Button 監(jiān)聽器的使用,如果不清楚可以參考后續(xù) Button 章節(jié),不是本節(jié)重點(diǎn)),在監(jiān)聽器中我們獲取 EditText 的內(nèi)容,并通過 Toast 打印到屏幕,效果如下:

獲取EditText內(nèi)容

擴(kuò)展:其實getText()不是 EditText 特有的,TextView 也可以通過getText()拿到顯示的內(nèi)容,只不過 TextView 的內(nèi)容是由我們設(shè)置上去的,所以需要去獲取的場景比較少,用的也相對少。

5. 小結(jié)

EditText 是繼承自 TextView 的,所以基本上 TextView 所有的屬性及用法都可以適用于 EditText。本節(jié)介紹了 EditText 的一些最常見的用法,而 EditText 和 TextView 的高級用法和屬性非常多,也都大同小異,掌握了本節(jié)的內(nèi)容,未來如果需要用到高級用法相信你也能很快的舉一反三。