2016-01-21 144 views
1

我是刚接触Android的编辑文本,右侧有一个清除按钮,工作正常,但我想清楚地显示当用户开始输入时按钮,但是当这个编辑文本为空时,我不想显示这个按钮。编辑文本的我的xml是。如何在Android中编辑时在编辑文本中显示清除按钮

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/editText" 
    android:background="@android:color/transparent" 
    android:hint="Email" 
    android:layout_marginTop="12dp" 
    android:layout_weight="1" 
    android:layout_below="@+id/view_divider_top_email" 
    android:layout_alignLeft="@+id/view_divider_top_email" 
    android:layout_alignStart="@+id/view_divider_top_email" 
    android:layout_alignRight="@+id/view_divider_top_email" 
    android:layout_alignEnd="@+id/view_divider_top_email" 
    android:drawableRight="@android:drawable/ic_delete" //this line will put the cross button on right of edit text 
    /> 

我怎样才能做到这一点

回答

3

EditTextaddTextChangeListener()尝试。当用户键入或从EditText中删除某些内容时,它将被调用。

edt.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 

      // TODO Auto-generated method stub 
     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

      // TODO Auto-generated method stub 
     } 

     @Override 
     public void afterTextChanged(Editable s) { 

      // TODO Auto-generated method stub 
     } 
    }); 

写内部onTextChanged()afterTextChanged()你的逻辑,检查EditText数据的长度,如果是大于0设定drawableRight

edt.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.drawableRight, 0); 

别的清晰绘制

edt.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0); 
+1

在这种情况下,我们如何执行onClick按钮 –

0

将下面的代码:

  1. 添加TextWatcherEditText
  2. 它会检查长度。
  3. 如果它大于0,我们将删除图标添加到右边的drawable。
  4. 如果它是0,那么所有图标都将被删除。

您可能还需要与填充尝试,否则你的文本将重叠的图标,当它是只要EditText本身。

mEditText.addTextChangedListener(new TextWatcher() { 
    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
    } 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
    } 

    @Override 
    public void afterTextChanged(Editable s) { 
     if(s.length() > 0) { 
      mEditText.setCompoundDrawablesWithIntrinsicBounds(0, 0, android.R.drawable.ic_delete, 0); 
     } else { 
      mEditText.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0); 
     } 
    } 
}); 
相关问题