是否有像EditText这样包含交叉按钮的小部件,或者是否有自动创建EditText的属性?我想用十字按钮删除任何写在EditText中的文本。
当前回答
Android材质设计组件2020解决方案:
添加材质组件到你的gradle设置:
从这里查找最新版本:https://maven.google.com/
implementation 'com.google.android.material:material:1.3.0'
或者如果你还没有更新到使用AndroidX库,你可以这样添加:
implementation 'com.android.support:design:28.0.0'
Then
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/hint_text"
app:endIconMode="clear_text">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</com.google.android.material.textfield.TextInputLayout>
注意:app:endIconMode="clear_text"
正如这里所讨论的材料设计文档
其他回答
如果你不想使用自定义视图或特殊的布局,你可以使用9-patch来制作(X)按钮。
示例: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;
}
});
根据您的需要,这种解决方案在某些情况下可以更好地工作。我希望我的xml不那么复杂。这也有助于如果你想有一个图标在左边,因为你可以简单地把它包括在9补丁。
Drawable x = getResources().getDrawable(R.drawable.x);
x.setBounds(0, 0, x.getIntrinsicWidth(), x.getIntrinsicHeight());
mEditText.setCompoundDrawables(null, null, x, null);
式中x为:
如果你在框架布局或你可以创建一个框架布局,我尝试了另一种方法....
<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"
/>
这是一个编辑文本,我把一个十字图标作为一个右绘图,然后在它上面我放了一个透明的按钮,清除文本。
下面是带有小部件的完整库: https://github.com/opprime/EditTextField
要使用它,你应该添加依赖:
compile 'com.optimus:editTextField:0.2.0'
在layout.xml文件中,你可以设置小部件:
xmlns:app="http://schemas.android.com/apk/res-auto"
app:clearButtonMode,can有这样的值: 从来没有 总是 whileEditing unlessEditing 应用:clearButtonDrawable
实际例子:
Android材质设计组件2020解决方案:
添加材质组件到你的gradle设置:
从这里查找最新版本:https://maven.google.com/
implementation 'com.google.android.material:material:1.3.0'
或者如果你还没有更新到使用AndroidX库,你可以这样添加:
implementation 'com.android.support:design:28.0.0'
Then
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/hint_text"
app:endIconMode="clear_text">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</com.google.android.material.textfield.TextInputLayout>
注意:app:endIconMode="clear_text"
正如这里所讨论的材料设计文档
推荐文章
- Android - SPAN_EXCLUSIVE_EXCLUSIVE跨度不能为零长度
- TextView的字体大小在Android应用程序改变字体大小从本机设置
- 如何模拟Android杀死我的进程
- 禁用EditText闪烁光标
- Android Eclipse -无法找到*.apk
- 设置TextView文本从html格式的字符串资源在XML
- 如何允许所有网络连接类型HTTP和HTTPS在Android(9)馅饼?
- Android加载JS包失败
- Android Studio, logcat在应用程序关闭后清理
- 在android中从上下文获取活动
- 无法解析主机"<URL here>"没有与主机名关联的地址
- getActivity()在Fragment函数中返回null
- 按钮背景是透明的
- 在Mac OS X上哪里安装Android SDK ?
- 我如何获得图像缩放功能?