步骤如下
1:实现自定义控件的布局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <EditText android:id="@+id/et" android:background="@drawable/bg_edittext" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="left|center_vertical" android:drawableLeft="@drawable/search1" android:paddingRight="30dp" android:singleLine="true" /> <ImageButton android:id="@+id/ib" android:visibility="gone" android:layout_alignParentRight="true" android:layout_width="20dp" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:layout_height="match_parent" android:scaleType="centerInside" android:background="#00000000" android:src="@drawable/delete" /> </RelativeLayout>
内容很简单,一个EditText 和 一个 ImageButton,其中android:drawableLeft="@drawable/search1"是输入框左侧图标
另外:android:background="@drawable/bg_edittext"这里引用自定义的背景,在我的另一篇文章里面有介绍:http://leoaioria.iteye.com/blog/2207587,如不用该背景,直接去掉这行或者修改即可。
2:定义好布局之后就是使用该布局并写清空内容和隐藏、显示删除按钮的事件了,代码如下
package com.hq.util; import android.content.Context; import android.text.Editable; import android.text.TextWatcher; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.EditText; import android.widget.ImageButton; import android.widget.LinearLayout; import com.hq.xbk2.R; public class EditClear extends LinearLayout{ ImageButton ib; EditText et; public EditClear(Context context) { super(context); } public EditClear(Context context, AttributeSet attrs) { super(context, attrs); LayoutInflater.from(context).inflate(R.layout.editclear, this, true); init(); } private void init() { ib = (ImageButton) findViewById(R.id.ib); et = (EditText) findViewById(R.id.et); et.addTextChangedListener(tw);// 为输入框绑定一个监听文字变化的监听器 // 添加按钮点击事件 ib.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { hideBtn();// 隐藏按钮 et.setText("");// 设置输入框内容为空 } }); } // 当输入框状态改变时,会调用相应的方法 TextWatcher tw = new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } // 在文字改变后调用 @Override public void afterTextChanged(Editable s) { if (s.length() == 0) { hideBtn();// 隐藏按钮 } else { showBtn();// 显示按钮 } } }; public void hideBtn() { // 设置按钮不可见 if (ib.isShown()){ ib.setVisibility(View.GONE); } } public void showBtn() { // 设置按钮可见 if (!ib.isShown()){ ib.setVisibility(View.VISIBLE); } } }
注意该类:用到了TextWatcher ,有兴趣的同学可以查阅下这方面的资料
3:以上步骤完成后,自定义控件就实现了,接下来就是在其它布局文件中使用了,使用方法很简单
<com.hq.util.EditClear android:layout_width="match_parent" android:layout_height="35dp"/>
写上完整的类名就可以了
相关推荐
为了解决这个问题,开发者们通常会自定义EditText控件,为其添加一个清除按钮,使得用户可以快速清空输入内容。本篇将详细介绍如何创建一个"自带清除按钮的EditText控件"。 首先,我们需要创建一个新的自定义View类...
在Android开发中,自定义控件是提升应用用户体验和界面个性化的重要手段。本文将深入探讨如何基于已有的系统控件,如EditText,进行扩展和定制,实现一个带有清除按钮的功能。我们将关注`ClearEditText`这个自定义...
在Android开发中,`EditText` 是一个非常常用的控件,用于接收用户输入的文本信息。在某些场景下,我们可能希望在用户输入内容后提供一个便捷的清除按钮,以便快速清空输入。这个功能可以通过自定义`EditText`的扩展...
在Android开发中,EditText是用于用户输入文本的基本控件,而“自定义带clear按钮的EditText”则是在标准EditText的基础上进行的功能扩展。这种扩展通常是为了提高用户体验,让用户能够更方便地清空输入内容,特别是...
本篇文章将详细探讨两种方法来实现`EditText`一键清空内容:一种是原生Android API提供的简单方法,另一种是通过自定义控件实现的较老方法。 ### 1. 原生Android API实现 #### 1.1 使用`clearText()`方法 原生的`...
本文将深入探讨如何基于Android系统原生的EditText控件,实现一个带有清除按钮、可切换密码可见性的自定义输入框。这个组件特别适用于处理需要输入密码或者短信验证码的场景,它能提供更加友好的交互方式,提升用户...
4. **自定义一个带有清除按钮的EditText**:EditText是Android中用于输入文本的基本控件,但默认不包含清除按钮。要实现这个功能,可以通过设置InputType属性为`textPassword`或`textVisiblePassword`来显示清除图标...
为了实现这一目标,我们需要在自定义控件中处理颜色、字体等主题属性。可以使用`ContextThemeWrapper`来应用主题,或者在`onCreateDrawableState()`中修改状态栏。 6. **兼容性处理**: 考虑到Android的版本差异,...
"带删除按钮的圆角EditText"是一个自定义控件的例子,它结合了EditText的基本输入功能和一个可点击的删除按钮,同时提供了圆角的视觉效果。这个自定义控件通常用于输入框中,让用户可以方便地清除输入内容,且设计上...
本项目提供了一个自定义的EditText控件,名为ClearEditText,它集成了一个清除按钮,使得用户能够方便地删除输入内容。 首先,我们来看看核心文件`ClearEditText.kt`。这个文件是一个Kotlin源码文件,用于定义...
在Android开发中,UI设计是用户体验的关键部分,而EditText作为用户输入数据的常见控件,其功能和样式设计显得尤为重要。本主题聚焦于一个增强版的EditText组件——PowerfulEditText,它提供了更多便利的功能,如...
在Android开发中,Edittext是用户输入文本的基本控件,但有时为了提供更好的用户体验,我们可能需要对其进行定制,比如添加一个删除按钮,使用户能够快速清除输入的内容。本主题将详细探讨如何自定义一个带有删除...
本案例中的“Android高级应用源码-自定义带有删除功能的edittext实例”就是一个很好的示例,展示了如何扩展系统的EditText控件,添加一个常用的清除按钮,通常用于登录或搜索等场景。 EditText是Android系统提供的...
在Android开发中,自定义控件是提升用户体验和界面独特性的重要手段。本示例"Android例子源码自定义带有删除功能的edittext实例"提供了一种方式来创建一个具有内置清除按钮的EditText,这对于登录、搜索等场景非常...
在Android应用开发中,创建一个带有删除按钮和能插入表情的自定义控件是一个常见的需求,这能够提升用户的输入体验,特别是在社交应用或者聊天界面。本文将深入探讨如何实现这样的功能,主要涉及以下几个方面: 1. ...
在【标题】"带删除按钮的edittext" 中提到的需求,就是指在`EditText` 的右侧添加一个可以点击的删除图标,以便用户快速清空输入。 【描述】"带删除按钮的edittext" 进一步强调了这个特性,即我们要实现的是一个...
总之,自定义带有删除功能的EditText是Android开发中提升用户体验的一个小技巧,通过自定义View的方式,我们可以为用户提供更直观、便捷的操作。理解并掌握这种自定义组件的方法,对于提升Android应用的品质和专业度...
在Android开发中,EditText是用于用户输入文本的基本控件,但在某些应用场景下,系统默认的EditText功能可能无法满足开发者的需求。比如,用户可能需要一个能够方便清除输入内容的EditText,或者需要动态改变文本框...
在这个实例中,我们探讨的是如何自定义一个EditText控件,实现清除文本和文本框抖动的功能。这个自定义控件名为ClearEditText,它扩展了EditText,并实现了View.OnFocusChangeListener和TextWatcher接口。 首先,...
这个"android带显示/隐藏密码/删除功能的EditText"是一个优化版的EditText,它提供了额外的功能,使得用户界面更加友好和实用。 首先,让我们深入探讨显示或隐藏密码的功能。在许多登录界面或涉及敏感信息输入的...