Я хочу показать DatePicker когда EditText
получает focus
:Как сделать виртуальную клавиатуру не показана, когда EditText получает фокус?
public class DatePickerUtil {
private Context ctxt;
private Calendar calendrier = Calendar.getInstance();
private EditText chp;
private KeyListener keyListener;
private OnTouchListener touchListener;
private boolean canceled;
private DatePickerDialog picker;
public DatePickerUtil(Context context, EditText field) {
ctxt = context;
chp = field;
keyListener = new KeyListener() {
@Override
public int getInputType() {
// TODO Auto-generated method stub
return 0;
}
@Override
public boolean onKeyDown(View view, Editable text, int keyCode,
KeyEvent event) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onKeyUp(View view, Editable text, int keyCode,
KeyEvent event) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onKeyOther(View view, Editable text, KeyEvent event) {
// TODO Auto-generated method stub
return false;
}
@Override
public void clearMetaKeyState(View view, Editable content,
int states) {
// TODO Auto-generated method stub
}
};
touchListener = new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
canceled = false;
show();
}
return false;
}
};
}
private void show() {
OnDateSetListener evt = new OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int annee, int mois, int jour) {
if (!canceled) {
calendrier.set(annee, mois, jour);
chp.setText(DateFormat.format("yyyy-MM-dd", calendrier));
}
}
};
picker = new DatePickerDialog(ctxt, evt, calendrier.get(Calendar.YEAR),
calendrier.get(Calendar.MONTH),
calendrier.get(Calendar.DAY_OF_MONTH));
picker.setButton(DialogInterface.BUTTON_NEGATIVE, ctxt.getResources().getString(R.string.button_cancel), new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
canceled = true;
dialog.dismiss();
}
});
picker.show();
}
public void attache() {
chp.setOnTouchListener(touchListener);
chp.setKeyListener(keyListener);
}
}
Во время выполнения фокус не внутри EditText
, но только окружает поле:
Как вы можете увидеть пользователя не может редактировать содержимое EditText
, поэтому virtualkeyboard
не требуется. Проблема в том, что virtualkeyboard
отображается, когда EditText
получает focus
! Итак, как сделать это не показано, когда EditText
получает focus
?
ли вы попробовать с 'андроида: inputType = "дата"' в вашем XML? – NSimon
Да, но у Android есть формат по умолчанию 'DD/MM/YYYY', хотя мой формат' YYYY-MM-DD' – pheromix