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