官术网_书友最值得收藏!

7.3 文本框

Android中的文本框控件是EditText,用來收集輸入文本信息與展示文本信息。默認情況下,文本框樣式如圖7-9中的Email address控件所示。注意,它只有下邊框。

圖7-9 EditText默認樣式

EditText的對應類是android.widget.EditText,類圖如圖7-10所示,從圖中可見android.widget.EditText繼承了android.widget.TextView。

圖7-10 EditText類圖

7.3.1 文本框相關屬性

EditText有很多屬性,以下是文本框特有屬性:

? android:maxLines。設置顯示最大行數。

? android:minLines。設置至少顯示行數。

? android:inputType。設置輸入類型,目前有32種不同類型可以輸入。例如,textPassword控制輸入的內容密碼顯示;phone控制彈出的鍵盤電話撥號鍵盤。

? android:hint。文本框中的提示文本,當文本框沒有輸入任何內容的時候,該屬性設置的內容呈現淺灰色顯示。

? android:textColorHint。設置提示文本的顯示顏色,默認值是淺灰色。

? android:singleLine。設置是否單行輸入。默認情況下文本框是可以輸入多行的,通過設置該屬性為true,使文本框只能單行輸入。

? android:background。設置文本框背景。

7.3.2 實例1:用戶登錄

圖7-11是用戶登錄實例,屏幕中有兩個文本框和一個登錄按鈕,第一個文本框是用戶名,第二個文本框是密碼輸入框架。

圖7-11 用戶登錄實例

布局文件activity_main.xml的代碼如下:

      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="vertical">
          <EditText
              android:id="@+id/username"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:background="@android:drawable/editbox_background"                ①
              android:hint="請輸入用戶名"/>                                              ②
          <EditText
              android:id="@+id/pwd"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:background="@android:drawable/editbox_background"                ③
              android:hint="請輸入密碼"                                                  ④
              android:inputType="textPassword"/>                                       ⑤
          <Button
              android:id="@+id/login_button"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:text="@string/button"/>
      </LinearLayout>

上述代碼第①行和第③行是設置android:background屬性,其中取值"@android:drawable/editbox_background"是Android框架提供的editbox_background.xml,設置該屬性之后,文本框周圍有邊框,并且當文本框獲得焦點時邊框會顯示為黃色,如圖7-11所示。

代碼第②行和第④行設置android:hint屬性,圖7-11是顯示淡灰色提示信息。代碼第⑤行android:inputType="textPassword"是設置控制輸入的內容密碼顯示。

MainActivity.java代碼如下:

        public class MainActivity extends AppCompatActivity{
            @Override
            protected void onCreate(Bundle savedInstanceState){
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);

                final EditText edittext =(EditText) findViewById(R.id.username);            ①
                Button button=(Button) findViewById(R.id.login_button);
                button.setOnClickListener(new View.OnClickListener(){
                    @Override
                    public void onClick(View v){
                        edittext.setText("你好我是EditText! ");                              ②
                    }
                });
            }
        }

上述代碼第①行是通過findViewById(R.id.username)方法查找EditText對象。

在程序代碼中,可以使用setText(CharSequence)方法設置EditText值,用getText()方法來獲得EditText的值,返回值是android.text.Editable接口類型,Editable繼承CharSequence接口。

提示 android.text.Editable是Android提供的,與String沒有任何關系,可通過toString()實現Editable轉換為String。示例代碼如下:

              Editable newTxt=(Editable) edittext.getText();
              String newString = newTxt.toString();

7.3.3 實例2:文本框輸入控制

EditText控件還有很多輸入控制屬性,下面通過如圖7-12所示的實例介紹輸入控制的相關屬性。

圖7-12 文本框輸入控制實例

布局文件activity_main.xml代碼中“最大行數3”EditText相關代碼如下:

      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="vertical">
          <EditText
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:hint="最大行數3"
              android:maxLines="3"/>                                                 ①
          …
      </LinearLayout>

上述代碼第①行android:maxLines="3"是設置顯示3行文本,如圖7-13所示,雖然輸入多行文本,但是只是顯示3行文本。

圖7-13 設置顯示3行文本

布局文件activity_main.xml代碼中輸入數字的EditText相關代碼如下:

      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="vertical">
          …
          <EditText
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:hint="輸入數字"                                                   ①
              android:inputType="number"
              android:singleLine="true"/>

          <EditText
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:hint="輸入帶小數點的浮點格式"
              android:inputType="numberDecimal"                                       ②
              android:singleLine="true"/>
          …
      </LinearLayout>

代碼第①行android:inputType="number"是設置輸入數字,彈出數字鍵盤(見圖7-14),雖然鍵盤上有小數點和負數但不能輸入,只能輸入數字。代碼第②行android:inputType="numberDecimal"是設置輸入帶小數點的浮點,彈出android:inputType="number"一樣的數字鍵盤(見圖7-14)。

圖7-14 設置輸入數字

布局文件activity_main.xml代碼中輸入日期時間的EditText相關代碼如下:

      <?xml version="1.0" encoding="utf-8"?>
      >LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="vertical">
          …
          >EditText
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:hint="輸入日期時間"
              android:inputType="datetime"                                          ①
              android:singleLine="true"/>
          >EditText
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:hint="輸入日期"
              android:inputType="date"                                              ②
              android:singleLine="true"/>
          >EditText
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:hint="輸入時間"
              android:inputType="time"                                              ③
              android:singleLine="true"/>
          …
      >/LinearLayout>

代碼第①行android:inputType="datetime"是設置輸入日期與時間,彈出日期與時間鍵盤(見圖7-15(a))。代碼第②行android:inputType="date"是設置輸入日期,彈出日期鍵盤(見圖7-15(b))。代碼第③行android:inputType="time"是設置輸入時間,彈出時間鍵盤(見圖7-15(c))。從圖7-15可見日期時間、日期和時間鍵盤差別只在于左下腳鍵不同。

圖7-15 設置輸入日期與時間

主站蜘蛛池模板: 灵台县| 同心县| 东台市| 肃宁县| 北安市| 莒南县| 奉新县| 古丈县| 鹤庆县| 渝北区| 日喀则市| 阿瓦提县| 金塔县| 会同县| 城固县| 沙雅县| 临湘市| 汾阳市| 囊谦县| 巴彦县| 临夏市| 长子县| 柳林县| 甘孜| 曲麻莱县| 泰来县| 治县。| 湘阴县| 墨竹工卡县| 汤原县| 西城区| 吴旗县| 塔河县| 瓮安县| 沾化县| 双辽市| 玉溪市| 岑溪市| 刚察县| 莱西市| 汕头市|