title: Android: DroidParts - ClearableEditText - clear button on one line
body: <p>I am using the DroidParts library for Clearable EditTexts (<a href="http://droidparts.org/widgets.html#clearableedittext" rel="nofollow">http://droidparts.org/widgets.html#clearableedittext</a>).  The question is how to keep the cross/clear button on the first line.  I have no idea where to start looking so any help would be great! Thanks</p>
  
  <p>Code is this:</p>
  
  <pre><code>import static org.droidparts.util.Strings.isNotEmpty;
  
  import org.droidparts.adapter.widget.TextWatcherAdapter;
  import org.droidparts.adapter.widget.TextWatcherAdapter.TextWatcherListener;
  
  import android.content.Context;
  import android.graphics.drawable.Drawable;
  import android.util.AttributeSet;
  import android.view.MotionEvent;
  import android.view.View;
  import android.view.View.OnFocusChangeListener;
  import android.view.View.OnTouchListener;
  import android.widget.EditText;
  
  public class ClearableEditText extends EditText implements OnTouchListener,
          OnFocusChangeListener, TextWatcherListener {
  
      public interface Listener {
          void didClearText();
      }
  
      public void setListener(Listener listener) {
          this.listener = listener;
      }
  
      private Drawable xD;
      private Listener listener;
  
      public ClearableEditText(Context context) {
          super(context);
          init();
      }
  
      public ClearableEditText(Context context, AttributeSet attrs) {
          super(context, attrs);
          init();
      }
  
      public ClearableEditText(Context context, AttributeSet attrs, int defStyle) {
          super(context, attrs, defStyle);
          init();
      }
  
      private void init() {
          xD = getCompoundDrawables()[2];
          if (xD == null) {
              xD = getResources()
                      .getDrawable(android.R.drawable.presence_offline);
  
          }
          xD.setBounds(0, 0, xD.getIntrinsicWidth(), xD.getIntrinsicHeight());
          setClearIconVisible(false);
          super.setOnTouchListener(this);
          super.setOnFocusChangeListener(this);
          addTextChangedListener(new TextWatcherAdapter(this, this));
      }
  
      @Override
      public void setOnTouchListener(OnTouchListener l) {
          this.l = l;
      }
  
      @Override
      public void setOnFocusChangeListener(OnFocusChangeListener f) {
          this.f = f;
      }
  
      private OnTouchListener l;
      private OnFocusChangeListener f;
  
      @Override
      public boolean onTouch(View v, MotionEvent event) {
          if (getCompoundDrawables()[2] != null) {
              if (event.getAction() == MotionEvent.ACTION_UP) {
                  boolean tappedX = event.getX() &gt; (getWidth()
                          - getPaddingRight() - xD.getIntrinsicWidth());
                  if (tappedX) {
                      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));
          }
      }
  
      protected void setClearIconVisible(boolean visible) {
          Drawable x = visible ? xD : null;
          setCompoundDrawables(getCompoundDrawables()[0],
                  getCompoundDrawables()[1], x, getCompoundDrawables()[3]);
      }
  }  
  </code></pre>
  
  <p>Is there another method that will have the same effect?</p>