EditText 用來輸入編輯資料,它繼承自 TextView,許多在 TextView中的方法也可以在這使用, 可藉由 xml 來定義, 其中參數可以調整輸入資料格式,長度等等,一個 EditText 在 xml 中定義如下

      <EditText
          android:id="@+id/editTextTime"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:ems="10"
          android:inputType="date" >
          <requestFocus />
      </EditText>

第 5 行限制字數為 10 個字元
第 6 行限制輸入格式為 date
也有一些常用的方法如下

          //get EditText
          EditText etMoney = (EditText) findViewById(R.id.editTextMoney);
          etMoney.setText("0000");
          etMoney.getText().toString();
          etMoney.setHint("提示");
          etMoney.setInputType(InputType.TYPE_NULL);// disappear keyboard

特殊方法
1.
點擊 EditText 關閉原本的 keyboard, 並跳出調整日期選項,調整完再設定到 EditText 中

          //get edTime
          etTime = (EditText) findViewById(R.id.editTextTime);
          //get now date
          final Calendar cal = Calendar.getInstance();
          String dateStr = "" + cal.get(Calendar.YEAR) // 2012
                  + "/" + (cal.get(Calendar.MONTH) + 1) // 12 (add 1 because it start from 0)
                  + "/" + cal.get(Calendar.DATE);// 24
                                                  // ....
          //now date set to etTime
          etTime.setText(dateStr);
          // set keyboard disappear
          etTime.setInputType(InputType.TYPE_NULL);
          // touch etTime will show datePickDialog
          etTime.setOnClickListener(new OnClickListener()
          {
              @Override
              public void onClick(View v) {
                  // TODO Auto-generated method stub
                  new DatePickerDialog(ADEdit_Flow.this, new DatePickerDialog.OnDateSetListener()
                  {
                      @Override
                      public void onDateSet(DatePicker view, int year, int monthOfYear,
                              int dayOfMonth) {
                          // TODO Auto-generated method stub
                          etTime.setText(""+year+"/"+(monthOfYear+1)+"/"+dayOfMonth);
                          FP.p("touch");
                      }
                  }, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DATE)).show();
              }
          });

 

2.
檢查輸入字數不可超過 7 位數,超過出現提示並重新輸入

          //get EditText
          EditText etMoney = (EditText) findViewById(R.id.editTextMoney);
          etMoney.setText("100");
          etMoney.addTextChangedListener(new TextWatcher() {
              @Override
              public void onTextChanged(CharSequence s, int start, int before, int count) {
                  // TODO Auto-generated method stub
              }
              @Override
              public void beforeTextChanged(CharSequence s, int start, int count,
                      int after) {
                  // TODO Auto-generated method stub
              }
              @Override
              public void afterTextChanged(Editable s) {
                  // TODO Auto-generated method stub
                  if(s.length()>7){
                      Toast.makeText(ADEdit_Flow.this, "最大輸入7位數字,請重新輸入",Toast.LENGTH_SHORT).show();
                      s.clear();
                  }
              }
          });

 

3.
若字串開頭部分有0,去掉0再重整,如 00987 -> 987,原理是藉由 Integer 的 parseInt() 來達成

  String temps =  etMoney.getText().toString();//只要可以轉換為字串即可
  int tempi = Integer.parseInt(temps);
  String.valueOf(tempi);