如何用十字(x)button在结尾创buildEditText?

是否有像EditText这样的包含十字button的小部件,还是有自动创buildEditText的任何属性? 我想要十字button删除EditText写的任何文本。

使用以下布局:

 <FrameLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="9dp" android:padding="5dp"> <EditText android:id="@+id/calc_txt_Prise" android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputType="numberDecimal" android:layout_marginTop="20dp" android:textSize="25dp" android:textColor="@color/gray" android:textStyle="bold" android:hint="@string/calc_txt_Prise" android:singleLine="true" /> <Button android:id="@+id/calc_clear_txt_Prise" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="10dp" android:layout_gravity="right|center_vertical" android:background="@drawable/delete" /> </FrameLayout> 

你也可以使用button的id,并执行你想要的onClickListener方法的任何行动。

如果你碰巧使用DroidParts ,我刚刚添加了ClearableEditText

以下是自定义背景和清除图标从ActionBarSherlock设置为abs__ic_clear_holo_light

在这里输入图像说明

你也可以检查这个修改和扩展答案ClearableEditText 。

 Drawable x = getResources().getDrawable(R.drawable.x); x.setBounds(0, 0, x.getIntrinsicWidth(), x.getIntrinsicHeight()); mEditText.setCompoundDrawables(null, null, x, null); 

其中,x是:

在这里输入图像说明

对于drawable resource你可以使用标准的android图像:

http://androiddrawables.com/Menu.html

例如 :

 android:background="@android:drawable/ic_menu_close_clear_cancel" 

如果您不想使用自定义视图或特殊布局,则可以使用9-patch制作(X)button。

例如: http : //postimg.org/image/tssjmt97p/ (我没有足够的点在StackOverflow上发布图像)

右侧和底部黑色像素的交点表示内容区域。 除此之外的任何东西都是填充。 所以要检测用户点击了x,你可以像这样设置一个OnTouchListener:

 editText.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { if (motionEvent.getAction() == MotionEvent.ACTION_UP){ if (motionEvent.getX()>(view.getWidth()-view.getPaddingRight())){ ((EditText)view).setText(""); } } return false; } }); 

根据您的需要,这种解决scheme在某些情况下可以更好地工作 我宁愿保持我的xml更简单。 如果你想在左边有一个图标,这也有帮助,因为你可以简单地将它包含在9补丁中。

你可以在这里下载源代码:

https://github.com/GhOsTTT/editTextXbutton

祝你今天愉快

我做了如下的UI部分:

 <RelativeLayout android:layout_width="fill_parent" android:layout_height="50dp" android:layout_marginTop="9dp" android:padding="5dp"> <EditText android:id="@+id/etSearchToolbar" android:layout_width="fill_parent" android:layout_height="match_parent" android:textSize="13dp" android:padding="10dp" android:textColor="@android:color/darker_gray" android:textStyle="normal" android:hint="Search" android:imeOptions="actionSearch" android:inputType="text" android:background="@drawable/edittext_bg" android:maxLines="1" /> <ImageView android:id="@+id/ivClearSearchText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginRight="6dp" android:src="@drawable/balloon_overlay_close" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" /> </RelativeLayout> 

edittext_bg.xml

 <?xml version="1.0" encoding="utf-8"?> 
 <solid android:color="#FFFFFF" /> <stroke android:width="1dp" android:color="#C9C9CE" /> <corners android:bottomLeftRadius="15dp" android:bottomRightRadius="15dp" android:topLeftRadius="15dp" android:topRightRadius="15dp" /> 

balloon_overlay_close.png 在这里输入图像说明

交叉/清除button隐藏/显示:

 searchBox.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {} @Override public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { if(charSequence.length() > 0){ clearSearch.setVisibility(View.VISIBLE); }else{ clearSearch.setVisibility(View.GONE); } } @Override public void afterTextChanged(Editable editable) {} }); 

处理search内容(即当用户点击软键盘上的search时)

 searchBox.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_SEARCH) { String contents = searchBox.getText().toString().trim(); if(contents.length() > 0){ //do search }else //if something to do for empty edittext return true; } return false; } });` 

清除/交叉button

  clearSearch.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { searchBox.setText(""); } }); 

使用

 android:drawableRight="@android:drawable/ic_input_delete" 

你可以用Jaydip的这个片段来回答多个button。 只需在获取对ET和Button元素的引用后调用它即可。 我用vecotrbutton,所以你必须将Button元素更改为ImageButton:

 private void setRemovableET(final EditText et, final ImageButton resetIB) { et.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus && et.getText().toString().length() > 0) resetIB.setVisibility(View.VISIBLE); else resetIB.setVisibility(View.INVISIBLE); } }); resetIB.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { et.setText(""); resetIB.setVisibility(View.INVISIBLE); } }); et.addTextChangedListener(new TextWatcher() { @Override public void afterTextChanged(Editable s) {} @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if(s.length() != 0){ resetIB.setVisibility(View.VISIBLE); }else{ resetIB.setVisibility(View.INVISIBLE); } } }); } 

这里是完整的库与小部件: https : //github.com/opprime/EditTextField

要使用它,你应该添加依赖项:

 compile 'com.optimus:editTextField:0.2.0' 

在layout.xml文件中,您可以使用小部件设置进行播放:

 xmlns:app="http://schemas.android.com/apk/res-auto" 
  • 应用程序:clearButtonMode,可以有这样的值:永远不会总是whileEditing unlessEditing

  • 应用:clearButtonDrawable

示例在行动:

在这里输入图像说明

如果你在框架布局,或者你可以创build一个框架布局,我尝试了另一种方法….

 <TextView android:id="@+id/inputSearch" android:layout_width="match_parent" android:layout_height="wrap_content" android:drawableRight="@drawable/ic_actionbar" android:layout_alignParentBottom="true" android:layout_toRightOf="@+id/back_button"/> <Button android:id="@+id/clear_text_invisible_button" android:layout_width="30dp" android:layout_height="30dp" android:layout_gravity="right|center_vertical" android:background="@color/transparent" android:layout_alignBaseline="@+id/inputSearch" android:layout_alignBottom="@+id/inputSearch" android:layout_alignRight="@+id/inputSearch" android:layout_alignEnd="@+id/inputSearch" android:layout_marginRight="13dp" /> 

这是一个编辑文本,我把一个十字图标作为一个可绘制的,而不是它,我把一个透明的button,清除文本。

Android的支持libarary有一个SearchView类正是这个。 (虽然不是来自于EditText ,所以必须使用SearchView.OnQueryTextListener而不是TextWatcher

搜索视图没有文字(和提示文字“搜索”)

在这里输入图像说明

像这样在XML中使用:

  <android.support.v7.widget.SearchView android:id="@+id/searchView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:iconifiedByDefault="false" android:queryHint="@string/SearchHint" app:iconifiedByDefault="false" app:queryHint="@string/SearchHint" />