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