我在右繪製(壓延圖標)活動已經在EditText
。如果我點擊EditText
或日曆圖標datepicker
應該打開對話框。
問題:
如果我點擊EditText
datepicker
對話框正確打開,但如果我點擊在第一次沒什麼Calendar
圖標正在發生的事情。如果我再次點擊相同的圖標,那麼datepicker
對話框已打開。
我已經ontouch實施了正確的繪製如下:
@Override
public boolean onTouch(View v, MotionEvent event) {
final int DRAWABLE_RIGHT = 2;
if (event.getAction() == MotionEvent.ACTION_UP) {
mValidationId = (Integer) v.getTag();
if (mEditText.getCompoundDrawables()[DRAWABLE_RIGHT] != null
&& !isErrorIconDisplayedForCalendarIcon) {
if (event.getRawX() >= (mEditText.getRight() - mEditText.getCompoundDrawables()[DRAWABLE_RIGHT]
.getBounds().width())) {
isErrorIconDisplayedForCalendarIcon = mValidationId == RegistrationValidator.VALIDATE_DATEOFBIRTH;
ViewUtils.hideVirturalKeyboard(mEditText);
mListener.OnErrorIconClick(mValidationId);
return true;
} else {
HideErrorIcon();
if (mValidationId == RegistrationValidator.VALIDATE_DATEOFBIRTH) {
mEditText.setCursorVisible(false);
mListener.OnCalendarIconClick();
ViewUtils.hideVirturalKeyboard(mEditText);
} else {
v.requestFocus();
ViewUtils.showVirturalKeyboard(mContext.getApplicationContext());
if (mValidationId == RegistrationValidator.VALIDATE_USERNAME ||
mValidationId == RegistrationValidator.VALIDATE_PASSWORD) {
RegistrationUserCredentialsController controller = (
(RegistrationUserCredentialsController) mDsmApplication
.getController(RegistrationUserCredentialsController.TAG));
if (controller != null) {
controller.OnRegistrationItemEditStart(mValidationId);
}
}
}
}
} else {
isErrorIconDisplayedForCalendarIcon = false;
if (mValidationId == RegistrationValidator.VALIDATE_DATEOFBIRTH) {
mEditText.setCursorVisible(false);
mListener.OnCalendarIconClick();
ViewUtils.hideVirturalKeyboard(mEditText);
} else {
if (mCurrentEditText != null && !mEditText.equals(mCurrentEditText)) {
mListener.OnRegistrationItemEditCompleted(
mCurrentEditText.getText().toString(), (Integer) mCurrentEditText.getTag()
);
}
mCurrentEditText = (CustomTextInputEditText) v;
v.requestFocus();
ViewUtils.showVirturalKeyboard(mContext.getApplicationContext());
if (mValidationId == RegistrationValidator.VALIDATE_USERNAME ||
mValidationId == RegistrationValidator.VALIDATE_PASSWORD) {
RegistrationUserCredentialsController controller = (
(RegistrationUserCredentialsController) mDsmApplication
.getController(RegistrationUserCredentialsController.TAG));
if (controller != null) {
controller.OnRegistrationItemEditStart(mValidationId);
}
}
}
}
}
return false;
}
在上面的代碼,我有一個問題與相關Edittext
出生日期。如果我點擊右邊的可繪製下劃線顏色Edittext
正在改變,第二次點擊後,日期選取器對話框打開。
,請訪問:https://stackoverflow.com/a/33996656/6021469 願你有你的解決方案。 –