public class MyEditText_Regular extends EditText implements View.OnTouchListener, View.OnFocusChangeListener, TextWatcherAdapter.TextWatcherListener {
private Context context;
private AttributeSet attrs;
private int defStyle;
public static enum Location {
LEFT(0), RIGHT(2);
final int idx;
private Location(int idx) {
this.idx = idx;
}
}
public interface Listener {
void didClearText();
}
public MyEditText_Regular(Context context) {
super(context);
Typeface face = Typeface.createFromAsset(context.getAssets(), "fonts/RobotoCondensed-Regular.ttf");
this.setTypeface(face);
this.context=context;
}
public MyEditText_Regular(Context context, AttributeSet attrs) {
super(context, attrs);
this.context=context;
Typeface face = Typeface.createFromAsset(context.getAssets(), "fonts/RobotoCondensed-Regular.ttf");
this.setTypeface(face);
this.attrs=attrs;
init();
}
public MyEditText_Regular(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
this.context=context;
Typeface face = Typeface.createFromAsset(context.getAssets(), "fonts/RobotoCondensed-Regular.ttf");
this.setTypeface(face);
this.attrs=attrs;
this.defStyle=defStyle;
init();
}
public void setListener(Listener listener) {
this.listener = listener;
}
/* null disables the icon*/
public void setIconLocation(Location loc) {
this.loc = loc;
initIcon();
}
@Override
public void setOnTouchListener(OnTouchListener l) {
this.l = l;
}
@Override
public void setOnFocusChangeListener(OnFocusChangeListener f) {
this.f = f;
}
private Location loc = Location.RIGHT;
private Drawable xD;
private Listener listener;
private OnTouchListener l;
private OnFocusChangeListener f;
@Override
public boolean onTouch(View v, MotionEvent event) {
if (getDisplayedDrawable() != null) {
int x = (int) event.getX();
int y = (int) event.getY();
int left = (loc == Location.LEFT) ? 0 : getWidth() - getPaddingRight() - xD.getIntrinsicWidth();
int right = (loc == Location.LEFT) ? getPaddingLeft() + xD.getIntrinsicWidth() : getWidth();
boolean tappedX = x >= left && x <= right && y >= 0 && y <= (getBottom() - getTop());
if (tappedX) {
if (event.getAction() == MotionEvent.ACTION_UP) {
setText("");
if (listener != null) {
listener.didClearText();
}
}
return true;
}
}
if (l != null) {
return l.onTouch(v, event);
}
return false;
}
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
setClearIconVisible(isNotEmpty(getText()));
} else {
setClearIconVisible(false);
}
if (f != null) {
f.onFocusChange(v, hasFocus);
}
}
@Override
public void onTextChanged(EditText view, String text) {
if (isFocused()) {
setClearIconVisible(isNotEmpty(text));
}
}
@Override
public void setCompoundDrawables(Drawable left, Drawable top, Drawable right, Drawable bottom) {
super.setCompoundDrawables(left, top, right, bottom);
initIcon();
}
private void init() {
super.setOnTouchListener(this);
super.setOnFocusChangeListener(this);
addTextChangedListener(new TextWatcherAdapter(this, this));
initIcon();
Typeface font=Typeface.createFromAsset(getContext().getAssets(), "fonts/RobotoCondensed-Regular.ttf");
this.setTypeface(font);
setClearIconVisible(false);
}
private void initIcon() {
xD = null;
if (loc != null) {
xD = getCompoundDrawables()[loc.idx];
}
if (xD == null) {
xD = getResources().getDrawable(android.R.drawable.presence_offline);
}
xD.setBounds(0, 0, xD.getIntrinsicWidth(), xD.getIntrinsicHeight());
int min = getPaddingTop() + xD.getIntrinsicHeight() + getPaddingBottom();
if (getSuggestedMinimumHeight() < min) {
setMinimumHeight(min);
}
}
private Drawable getDisplayedDrawable() {
return (loc != null) ? getCompoundDrawables()[loc.idx] : null;
}
protected void setClearIconVisible(boolean visible) {
Drawable[] cd = getCompoundDrawables();
Drawable displayed = getDisplayedDrawable();
boolean wasVisible = (displayed != null);
if (visible != wasVisible) {
Drawable x = visible ? xD : null;
super.setCompoundDrawables((loc == Location.LEFT) ? x : cd[0], cd[1], (loc == Location.RIGHT) ? x : cd[2],
cd[3]);
}
}
}
I am adding Typeface but it is workingPlaese help me..