需求:项目中的有关搜索的地方,加上清空文字的功能,目的是为了增加用户体验,使用户删除文本更加快捷
解决过程:开始的时候感觉这个东西不太好实现,主要就是布局的问题,可能是开始顾虑的太多了,再加上当时产品催的不太紧,而且这个功能也不是必须实现的。但是今天不一样了,这个是老大让加上的,说别的很多应用中都有这个功能,没办法那就加上呗,试着去使用了相对布局去实现,把一个删除按键放在编辑框的右上方,当文字的时候就把删除按键给显示出来,当编辑框为空的时候就把删除按键给隐藏掉。布局代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:paddingBottom="50dp"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<RelativeLayout android:id="@+id/top"
android:layout_width="fill_parent"
android:layout_alignParentTop="true"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:background="@drawable/top_background"
android:layout_height="wrap_content">
<Button android:id="@+id/btnSearch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:textSize="12sp"
android:textStyle="bold"
android:background="@drawable/search_btn_background"
android:text="搜索"/>
<RelativeLayout android:id="@+id/rlSearchFrameDelete"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:gravity="center_vertical"
android:layout_toLeftOf="@id/btnSearch">
<EditText android:id="@+id/etSearch"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:background="@drawable/search_frame"
android:layout_marginRight="10dp"
android:paddingLeft="32dp"
android:textSize="12sp"
android:hint="请输入文字..."/>
<ImageView android:id="@+id/ivDeleteText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:src="@drawable/delete"
android:layout_centerInParent="true"
android:paddingRight="20dp"
android:visibility="gone"/>
</RelativeLayout>
</RelativeLayout>
</RelativeLayout>
这代码是直接从项目那截取过来的,里面用到了一些小技巧,开发的时候用到的布局写法,其中以一种背景平铺,这个在以前的文章里讲述过。在主程序里主要是使用了EditText监听输入的功能,这个以前的文章也写过,这次在使用又复习了一遍。代码如下
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ivDeleteText = (ImageView) findViewById(R.id.ivDeleteText);
etSearch = (EditText) findViewById(R.id.etSearch);
ivDeleteText.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
etSearch.setText("");
}
});
etSearch.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
public void afterTextChanged(Editable s) {
if (s.length() == 0) {
ivDeleteText.setVisibility(View.GONE);
} else {
ivDeleteText.setVisibility(View.VISIBLE);
}
}
});
现在就可以实现开始描述的要求了。这里面还用到了一张背景图是.9.png的,能大能小哦
Demo代码:http://download.csdn.net/detail/walker02/4532352
分享到:
相关推荐
在Android开发中,实现“在EditView中输入表情”是一个常见的需求,特别是在社交应用或者聊天应用中。这个功能能够提供用户更加丰富的表达方式,增强用户体验。以下是对这一知识点的详细阐述: 1. **EditView的基本...
当用户在EditView中输入文字时,系统会实时匹配数据源中的内容,将与输入内容匹配的部分展示为下拉列表供用户选择。这种功能在搜索框中尤其常见,能提高用户的输入效率,减少错误输入的可能性。 实现自动提示功能的...
EditText是Android SDK中的一个基础组件,用于接收用户输入的文字信息。在许多应用场景中,我们可能需要对用户的输入进行验证,确保其符合特定格式,例如手机号码必须为11位数字,邮箱地址需符合电子邮件的标准格式...
在Android开发中,`EditText` 是一个非常常见的控件,用于接收用户输入的文字信息。然而,在某些场景下,我们可能需要提供一种更加交互式的输入方式,例如下拉选择框,这样用户可以从预设的选项中选择,而不是手动...
同时,可以添加额外的属性(如字体资源、颜色值等)并使用`setXXX()`方法暴露给布局文件,方便在XML中使用。 对于`CustomEditText`,可能我们需要增加如自动完成、密码显示切换等功能。这可能涉及到监听输入事件、...
在Android开发中,EditView是用户输入文本的常见组件,当用户点击EditView时,系统默认行为是自动弹出软键盘以便用户输入。在某些情况下,我们可能希望自定义这一行为,例如,当我们想要在应用启动时就显示软键盘,...
在Android开发中,EditView是用户界面中常见的一种组件,用于接收用户输入的文字信息。然而,EditView并不仅仅局限于文字输入,它还可以扩展为更复杂的数据选择功能,比如实现左右选择数据的效果。这个"EditView左右...
3. `android.text.TextWatcher`: TextWatcher接口用于监听文本变化,EditView会添加TextWatcher来实时获取文本变化事件。 4. `android.widget.TextView`: EditView继承自TextView,因此其大部分基础功能来源于...
在自定义EditText中,我们通过TextWatcher监听文本的变化,动态调整清除按钮的可见性。 - 如果你的应用支持多种屏幕尺寸和方向,确保在不同情况下,清除按钮的位置和大小都能正确显示。 通过以上步骤,你已经成功...
我们可以通过实现这个接口来监听EditText中的文本变化。 ```java class EditChangedListener implements TextWatcher { private CharSequence temp; // 监听前的文本 private int editStart; // 光标开始位置 ...
总结一下,创建一个带有清空按钮的`EditText`在Android开发中并不复杂,只需要在布局文件中添加`EditText`和按钮,然后在Java或Kotlin代码中设置点击事件和文本监听。通过以上步骤,我们可以创建一个用户友好的输入...
2. **设置监听器**:为了监听EditText的内容变化,我们需要为EditText添加一个TextWatcher。TextWatcher是一个接口,包含三个方法:beforeTextChanged()、onTextChanged()和afterTextChanged()。我们可以在...
我们在android手机上面有时候会遇到监听手机软键盘按键的时候,例如:我们在浏览器输入url完毕后可以点击软键盘右下角的“GO”按键加载url页面;在点击搜索框的时候,点击右下角的search符号键可以进行搜索;或者在...
开发者可以创建该接口的实例,并在`onLayout()`方法中调用该接口的`onInputListener()`方法,将状态变化传递给持有该监听器的类。 2. 通过布局变化和偏移量计算来间接监听软键盘。 这种方法不需要自定义View,但...
为了实现这个功能,我们需要在特定的单元格中嵌入EditView,并处理其焦点变化和文本输入事件。同时,需要确保在用户完成编辑后,更新数据显示。 3. **自定义View的实现步骤**: - **初始化视图**:在构造函数中,...
3. 在代码中操作`EditText`:通过`findViewById()`方法获取`FloatingLabel`对象,并进行设置或监听事件。 除此之外,还可以自定义悬浮文字的颜色、字体大小、动画效果等。这通常通过设置库提供的属性或者直接修改...
在Android开发中,"android充值demo 自定义editview自定义radiobutton"是一个常见的应用场景,它涉及到用户界面(UI)的设计和交互,特别是针对移动应用中的支付功能。下面将详细讲解这个主题涉及的知识点。 首先,...
在Android开发中,`EditText`(也称为EditView)是用户界面中常见的一种组件,用于接收用户输入的数据。为了对用户的输入进行控制和规范,我们可以使用`InputFilter`。本教程将详细介绍`InputFilter`的概念、作用...
如果输入的不是中文字符,我们可以在`onTextChanged()`方法中清空EditText的内容,或者显示一个提示信息告知用户只能输入中文。这样,当用户尝试输入非中文字符时,系统会自动将其过滤掉。 6. **代码示例**: 在...
将附件、相册中的图片、拍照的图片、录音等文件转换为html格式,在Editview中可以一次插入多种相同类型的文件(如多个附件、多个相册的图片、多个拍照的图片以及多个录音的文件),同时拍照的图片会默认存储在sd中...