EditText控件用於獲取用戶的輸入
繼承自TextView 因此自動繼承了android:text屬性、獲取控件文本內容的getText()方法和設置控件文本內容的setText()方法
常用屬性:
android:text
android:hint 用於設置顯示在EditText上的提示信息
android:numeric 只能用於輸入數字
android:maxLength 限制編輯框中輸入的字數
android:password 密碼模式
android:lines 可輸入的行數
實例:用EditText實現微博評論界面的限制
要求提示輸入的文字數 並且最多隻能爲140字
超過字數不能提交併顯示警告信息
首先我們定義一個界面佈局
由一個EditText框 兩個TextView框 一個按鈕 組成
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/etText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ems="10"
android:lines="8"
android:hint="請輸入評論內容"
android:maxLength="140">
<requestFocus />
</EditText>
<LinearLayout 注意:這個LinearLayout 表示TextView和按鈕Button是水平排列的
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout 注意:這個LinearLayout 表示兩個TextView是上下垂直排列的
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/tvMsg1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/tvMsg2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
<Button
android:id="@+id/btnSend"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btnSend"
android:paddingRight="15dip"
/>
</LinearLayout>
</LinearLayout>
然後我們在代碼中實現EditText的事件監聽
public class EditTest extends Activity{
private EditText edContent=null;
private TextView tvContent=null; //第一行TextView
用於顯示字數提示:字數統計:25/140字
private TextView tvMsg=null; //第二行TextView
用於顯示警告信息:還可輸入:115字 或 最多隻能輸入140字
private Button btnSend=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.eidt_layout);
edContent=(EditText) findViewById(R.id.etText);
tvContent=(TextView) findViewById(R.id.tvMsg1);
tvMsg=(TextView) findViewById(R.id.tvMsg2);
btnSend=(Button) findViewById(R.id.btnSend);
edContent.addTextChangedListener(new TextWatcher() { //注意: 這裏是EditText 的監聽和回調方法
@Override
public void onTextChanged(CharSequence str, int arg1, int arg2, int arg3) {
//EditText 回調方法要實現3個方法
一般我們實現onTextChanged
int len=str.length();
tvContent.setText("字數統計:"+len+"/140");
//當字數達到140時顯示警告信息
if(len==140){
tvMsg.setText("輸入的字數已達到上限!");
}else{
tvMsg.setText("還可以輸入:"+(140-len)+"個字");
}
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
}
@Override
public void afterTextChanged(Editable arg0) {
}
});
btnSend.setOnClickListener(new OnClickListener() {
//按鈕的監聽和回調方法
@Override
public void onClick(View arg0) {
int len=edContent.getText().toString().length(); //獲得輸入的長度
if(len==0 || "請輸入評論內容".equals(edContent.getText())){
Toast.makeText(EditTest.this, "評論內容不能爲空", 2000).show();
}else{
Toast.makeText(EditTest.this, "發表成功!", 2000).show();
}
}
});
}