1、常用属性

        <!--selectAllOnFocus  获得焦点后全选组件内所有文本内容-->
<!--inputType 限制输入方式-->
<!--singleLine 是否单行显示-->
<!--maxLines 最大行数超过文本自动上滚-->
<!--scaleX scaleY 文字间隔-->
<!--layout_marginLeft 控件自身左边偏移-->
<!--paddingLeft 控件内部内容左边偏移-->
<!--hint 提示语-->
<!--textColorHint 提示语颜色-->
<!--enabled 输入框是否可编辑-->
<!--imeOptions 修改'完成'样式-->
<!--textCursorDrawable 设置光标 null隐藏光标和字体颜色一致-->
<!--background 背景图片-->
<!--drawableBottom 通过shape自定义下划线-->

2、简单使用

layout布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".LoginActivity"> <!--selectAllOnFocus 获得焦点后全选组件内所有文本内容-->
<!--inputType 限制输入方式-->
<!--singleLine 是否单行显示-->
<!--maxLines 最大行数超过文本自动上滚-->
<!--scaleX scaleY 文字间隔-->
<!--layout_marginLeft 控件自身左边偏移-->
<!--paddingLeft 控件内部内容左边偏移-->
<!--hint 提示语-->
<!--textColorHint 提示语颜色-->
<!--enabled 输入框是否可编辑-->
<!--imeOptions 修改'完成'样式-->
<!--textCursorDrawable 设置光标 null隐藏光标和字体颜色一致-->
<!--background 背景图片-->
<!--drawableBottom 通过shape自定义下划线-->
<com.example.xianfengzhang.myapplication.EditTextDelete
android:id="@+id/edit11"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:inputType="none"
android:selectAllOnFocus="true"
android:singleLine="false"
android:minLines="1"
android:maxLines="3"
android:scaleX="1"
android:scaleY="1"
android:layout_marginLeft="5dp"
android:paddingLeft="5dp" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/edit22"
android:hint="这是提示语……"
android:textColorHint="@color/colorPrimaryDark"
android:enabled="true"
android:imeOptions="actionSearch"
android:textCursorDrawable="@drawable/edit_cur_values"
android:background="@null"
android:drawableBottom="@drawable/edit_down_values"
/> </LinearLayout>

自定义的 EditTextDelete

package com.example.xianfengzhang.myapplication;

import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.widget.EditText; import java.util.jar.Attributes; /**
* Created by xianfengzhang on 2017/12/14.
*/ public class EditTextDelete extends android.support.v7.widget.AppCompatEditText { private final static String TAG = "EditTextDelete";
private Drawable imgInable;
private Drawable imgAble;
private Context mContest; public EditTextDelete(Context context){
super(context);
mContest = context;
init();
}
public EditTextDelete(Context context, AttributeSet attrs) {
super(context, attrs);
mContest = context;
init();
} public EditTextDelete(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
mContest = context;
init();
} private void init(){ imgInable = mContest.getDrawable(R.drawable.del);
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) { } @Override
public void afterTextChanged(Editable editable) {
setDrawable();
}
});
setDrawable();
} private void setDrawable(){
if (length()<1)
setCompoundDrawablesWithIntrinsicBounds(null,null,null,null);
else
setCompoundDrawablesWithIntrinsicBounds(null,null,imgInable,null); }
@Override
public boolean onTouchEvent(MotionEvent event) {
if (imgInable != null && event.getAction() == MotionEvent.ACTION_UP) {
int eventX = (int) event.getRawX();
int eventY = (int) event.getRawY();
Log.e(TAG, "eventX = " + eventX + "; eventY = " + eventY);
Rect rect = new Rect();
getGlobalVisibleRect(rect);
rect.left = rect.right - 100;
if (rect.contains(eventX, eventY))
setText("");
}
return super.onTouchEvent(event);
} @Override
protected void finalize() throws Throwable{
super.finalize();
} }

效果图

Android基础控件EditText的更多相关文章

  1. android 基础控件 EditText

    EditText 简介: EditText 控件继承 TextView ,它有TextView的所有属性和方法,并且自身是可编辑的: extends TextView java.lang.Object ...

  2. Android基础控件ListView基础操作

    1.简介 基于Android基础控件ListView和自定义BaseAdapter适配器情况下,对ListView的数据删除和添加操作: public boolean add(E e) {//添加数据 ...

  3. android 基础控件(EditView、SeekBar等)的属性及使用方法

        android提供了大量的UI控件,本文将介绍TextView.ImageView.Button.EditView.ProgressBar.SeekBar.ScrollView.WebView ...

  4. 矩阵, 矩阵 , Android基础控件之ImageView

    天下文章大家抄,以下所有内容,有来自copy,有来自查询,亦有自己的总结(目的是总结出自己的东西),所以说原创,不合适,说是转载也不恰当,所以我称之为笔记,可惜没有此分类选项,姑且不要脸一点,选择为原 ...

  5. Android输入控件EditText和软键盘监听

    1. 跳转到新的页面自动软键盘显示情况: 在配置清单文件AndroidManifest.xml文件,对Activity的windowSoftInputMode属性进行设置. stateUnspecif ...

  6. android基础控件的使用

    控件在屏幕上位置的确定 通常情况下控件在屏幕上确定至少要连接两条线(一条水平,一条垂直) 如下图连接了四条线 辅助线 辅助线的调出: 水平辅助线:进入activity.xml的设计模式之后如下图 为了 ...

  7. Android 基础控件 TextView

    一TextView介绍: TextView是UI最基本的组件,使用TextView可以显示丰富的文本信息.设置添加TextView最常见的方法就是在xml中添加TextView元素,并指定属性.Tex ...

  8. Android基础控件TextClock和Chronometer的使用

    1.简介 DigitalClock, TextClock,AnalogClock,Chronometer其中DigitalClock和AnalogClock废弃了! TextClock是在Androi ...

  9. Android基础控件ProgressBar进度条的使用

    1.简介 ProgressBar继承与View类,直接子类有AbsSeekBar和ContentLoadingProgressBar, 其中AbsSeekBar的子类有SeekBar和RatingBa ...

随机推荐

  1. 测试Tensorflow-GPU的例子

    import tensorflow as tf # import os # os.environ['TF_CPP_MIN_LOG_LEVEL']='2' a = tf.placeholder(tf.i ...

  2. 2-MySQL高级-事务-基本概念(1)

    事务 1. 为什么要有事务 事务广泛的运用于订单系统.银行系统等多种场景 例如: A用户和B用户是银行的储户,现在A要给B转账500元,那么需要做以下几件事: 检查A的账户余额>500元: A ...

  3. centos安装与配置R语言

    Linux下安装R语言 一.编译安装 由于采用编译安装,所以需要用到gcc编译环境,在编译前check文件时还会用到libXt-devel和readline-devel两个依赖,所以在编译R语言源码时 ...

  4. Java面试(1)

    一.Java基础 什么是字符串常量池? Java中的字符串常量池(String Pool)是存储在Java堆内存中的字符串池: String是java中比较特殊的类,我们可以使用new运算符创建Str ...

  5. Win和Linux定时备份数据库

    项目的数据库需要每天备份,但是手动备份太麻烦而且容易忘,所以通过定时任务执行脚本备份数据库,服务器有Windows和Linux,所以两种都记录一下. 一.Windows 首先写好脚本,这里不多说,因为 ...

  6. C++之控制内存分配

    一.内存分配方式 在C++中,内存分成5个区,他们分别是堆.栈.自由存储区.全局/静态存储区和常量存储区.栈:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释 ...

  7. Spring Boot环境搭建。

    1.环境准备. jdk1.8 idea(如果不会激活可以看另外一篇:https://www.cnblogs.com/joeking/p/11119123.html) 2.打开idea 如果是idea的 ...

  8. 基于VUE利用pdf.js实现文件流形式的pdf显示

    首先推荐大家看一下这个demo vue-pdf.js-demo,这里面包含固定本地地址,远程pdf地址,通过打开文件的方式打开pdf 这儿我们着重介绍一下通过文件流的形式打开pdf.(所谓文件流,就是 ...

  9. react 实现类似vue中的<keep-alive>的功能,并解决antd-mobile切换回来时的空白

    在移动端的spa页面中,只要使用到了路由就很有必要使用到状态保存的功能,这样才能保证在页面进行切换的时候,让用户可以看到刚才滑动的地方,让用户的体验更加友好.这儿我找到了react-router-ca ...

  10. csps模拟84Smooth,Six,Walker题解

    题面:https://www.cnblogs.com/Juve/articles/11733280.html smooth: 暴力强筛到7e7有60分... 正解: 维护一个队列,存所有的B-光滑数, ...