public class EditTextErrorJellyBean extends EditText {
public EditTextErrorFixed(Context context) {
super(context);
}
public EditTextErrorJellyBean(Context context, AttributeSet attrs) {
super(context, attrs);
}
public EditTextErrorJellyBean(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
if (TextUtils.isEmpty(getText().toString())
&& keyCode == KeyEvent.KEYCODE_DEL)
return true;
else
return super.onKeyPreIme(keyCode, event);
}
private Drawable lastErrorIcon = null;
@Override
protected void onFocusChanged(boolean focused, int direction,
Rect previouslyFocusedRect) {
super.onFocusChanged(focused, direction, previouslyFocusedRect);
showErrorIconHax(lastErrorIcon);
}
@Override
public void setError(CharSequence error, Drawable icon) {
super.setError(error, icon);
lastErrorIcon = icon;
if (error != null) {
showErrorIconHax(icon);
}
}
private void showErrorIconHax(Drawable icon) {
if (icon == null)
return;
if (android.os.Build.VERSION.SDK_INT != Build.VERSION_CODES.JELLY_BEAN
&& android.os.Build.VERSION.SDK_INT != Build.VERSION_CODES.JELLY_BEAN_MR1)
return;
Class<?> textview = Class.forName("android.widget.TextView");
Field tEditor = textview.getDeclaredField("mEditor");
tEditor.setAccessible(true);
Class<?> editor = Class.forName("android.widget.Editor");
Method privateShowError = editor.getDeclaredMethod("setErrorIcon",
Drawable.class);
privateShowError.setAccessible(true);
privateShowError.invoke(tEditor.get(this), icon);
}
}
public EditTextErrorFixed(Context context) {
super(context);
}
public EditTextErrorJellyBean(Context context, AttributeSet attrs) {
super(context, attrs);
}
public EditTextErrorJellyBean(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
if (TextUtils.isEmpty(getText().toString())
&& keyCode == KeyEvent.KEYCODE_DEL)
return true;
else
return super.onKeyPreIme(keyCode, event);
}
private Drawable lastErrorIcon = null;
@Override
protected void onFocusChanged(boolean focused, int direction,
Rect previouslyFocusedRect) {
super.onFocusChanged(focused, direction, previouslyFocusedRect);
showErrorIconHax(lastErrorIcon);
}
@Override
public void setError(CharSequence error, Drawable icon) {
super.setError(error, icon);
lastErrorIcon = icon;
if (error != null) {
showErrorIconHax(icon);
}
}
private void showErrorIconHax(Drawable icon) {
if (icon == null)
return;
if (android.os.Build.VERSION.SDK_INT != Build.VERSION_CODES.JELLY_BEAN
&& android.os.Build.VERSION.SDK_INT != Build.VERSION_CODES.JELLY_BEAN_MR1)
return;
Class<?> textview = Class.forName("android.widget.TextView");
Field tEditor = textview.getDeclaredField("mEditor");
tEditor.setAccessible(true);
Class<?> editor = Class.forName("android.widget.Editor");
Method privateShowError = editor.getDeclaredMethod("setErrorIcon",
Drawable.class);
privateShowError.setAccessible(true);
privateShowError.invoke(tEditor.get(this), icon);
}
}
0 coment�rios:
Post a Comment