EditText控件的使用

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();
                }
            }
        });
    }

發佈了14 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章