android:EditText控制元件

yufan發表於2016-01-08

EditText 是程式用於和使用者進行互動的另一個重要控制元件,它允許使用者在控制元件裡輸入和編 輯內容,並可以在程式中對這些內容進行處理。EditText 的應用場景應該算是非常普遍了, 發簡訊、發微博、聊 QQ 等等,在進行這些操作時,你不得不使用到 EditText。那我們來看 一看如何在介面上加入 EditText 吧,修改 activity_main.xml 中的程式碼,如下所示:

 

<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/edit_text" android:layout_width="match_parent" android:layout_height="wrap_content"

/>

</LinearLayout>

其實看到這裡,我估計你已經總結出 Android 控制元件的使用規律了,基本上用法都很相似, 給控制元件定義一個 id,再指定下控制元件的寬度和高度,然後再適當加入些控制元件特有的屬性就差不 多了。所以使用 XML 來編寫介面其實一點都不難,完全可以不用藉助任何視覺化工具來實 現。現在重新執行一下程式,EditText 就已經在介面上顯示出來了,並且我們是可以在裡面 輸入內容的,如圖 3.5 所示。

 

 

 

 

 

圖   3.5

 

細心的你平時應該會留意到,一些做得比較人性化的軟體會在輸入框裡顯示一些提示性 的文字,然後一旦使用者輸入了任何內容,這些提示性的文字就會消失。這種提示功能在 Android 裡是非常容易實現的,我們甚至不需要做任何的邏輯控制,因為系統已經幫我們都 處理好了。修改 activity_main.xml,如下所示:

 

<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/edit_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Type something here"

/>

</LinearLayout>

 

 

 

這裡使用 android:hint 屬性來指定了一段提示性的文字,然後重新執行程式,效果如圖

3.6 所示。

 

 

圖   3.6

 

可以看到,EditText 中顯示了一段提示性文字,然後當我們輸入任何內容時,這段文字 就會自動消失。

不過隨著輸入的內容不斷增多,EditText 會被不斷地拉長。這時由於 EditText 的高度指 定的是 wrap_content,因此它總能包含住裡面的內容,但是當輸入的內容過多時,介面就會 變得非常難看。我們可以使用 android:maxLines 屬性來解決這個問題,修改 activity_main.xml, 如下所示:

 

<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/edit_text" android:layout_width="match_parent" android:layout_height="wrap_content"

 

 

 

android:hint="Type something here"

android:maxLines="2"

/>

</LinearLayout>

這裡通過 android:maxLines 指定了 EditText 的最大行數為兩行,這樣當輸入的內容超過 兩行時,文字就會向上滾動,而 EditText 則不會再繼續拉伸,如圖 3.7 所示。

 

 

圖   3.7

 

我們還可以結合使用 EditText 與 Button 來完成一些功能,比如通過點選按鈕來獲取

EditText 中輸入的內容。修改 MainActivity 中的程式碼,如下所示:

 

public class MainActivity extends Activity implements OnClickListener {

 

 

private Button button;

 

 

private EditText editText;

 

 

@Override

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

button = (Button) findViewById(R.id.button);

 

 

 

editText = (EditText) findViewById(R.id.edit_text);

button.setOnClickListener(this);

}

 

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.button:

String inputText = editText.getText().toString(); Toast.makeText(MainActivity.this, inputText,

Toast.LENGTH_SHORT).show();

break;

default:

break;

}

}

 

}

首先通過 findViewById() 方法得到 EditText 的例項,然後在按鈕的點選事件裡呼叫 EditText 的 getText()方法獲取到輸入的內容,再呼叫 toString()方法轉換成字串,最後仍 然還是老方法,使用 Toast 將輸入的內容顯示出來。重新執行程式,在 EditText 中輸入一段內容,然後點選按鈕,效果如圖 3.8 所示。

 

 

 

圖   3.8

 

相關文章