【5】EditText——输入框
来源:互联网 发布:淘宝短信营销资料 编辑:程序博客网 时间:2024/06/08 00:47
public class EditText extends TextView
EditText是一个非常重要的组件,可以说它是用户和Android应用进行数据传输窗户,有了它就等于有了一扇和Android应用传输的门,通过它用户可以把数据传给Android应用,然后得到我们想要的数据。
要点:
1、EditText是TextView的子类,所以TextView的方法和特性同样存在于EditText中。
2、输入变化事件:addTextChangeListener(TextWatcher)。
3、监听回车键:setOnEditTextActionListener。
4、选取文本。
EditText editable = editText.getText();
Selection.setSelection(editable, 1, editable.length());
1、设置默认提示文本以及提示文本颜色:
设置提示文本:
android:hint="在这边写提示文本的内容"
效果如下:
设置提示文本颜色:
android:textColorHint="#00ff00"
效果如下:
2、获得焦点后全选组件内所有文本内容:
android:selectAllOnFocus="true"
效果如下:
3、限制EditText的输入类型:
有时我们可能需要对输入的数据进行限制,比如输入电话号码的时候,你输入了一串字母,这显然是不符合我们预期的,而限制输入类型可以通过inputType属性来实现。举个例子,比如下面的设置就只能限制输入数字,其他字符输入无效。
android:inputType="number"
inpuType有以下几个参数:
a、文本类型,多为大小写和数字符号:
android:inputType="none"android:inputType="text"android:inputType="textCapCharacters"android:inputType="textCapWords"android:inputType="textCapSentences"android:inputType="textAutoCorrect"android:inputType="textAutoComplete"android:inputType="textMultiLine"android:inputType="textImeMultiLine"android:inputType="textNoSuggestions"android:inputType="textUri"android:inputType="textEmailAddress"android:inputType="textEmailSubject"android:inputType="textShortMessage"android:inputType="textLongMessage"android:inputType="textPersonName"android:inputType="textPostalAddress"android:inputType="textPassword"android:inputType="textVisiblePassword"android:inputType="textWebEditText"android:inputType="textFilter"android:inputType="textPhonetic"
b、数值类型:
android:inputType="number"android:inputType="numberSigned"android:inputType="numberDecimal"android:inputType="phone"//拨号键盘android:inputType="datetime"android:inputType="date"//日期键盘android:inputType="time"//时间键盘
4、设置最小行、最多行、单行、多行、自动换行:
EditText默认是多行显示的,并且能够自动换行,即当一行显示不完的时候,它会自动换到第二行。效果如下:
我们可以对其进行限制,比如:设置最小行的行数:android:minLines="3",或者设置EditText最大的行数:android:maxLines="3"。
PS:当输入内容超过maxline,文字会自动向上滚动!另外很多时候我们可能要限制EditText只允许单行输入,而且不会滚动,比如上面的登陆界面的。例子,我们只需要设置:
android:singleLine="true"
即可实现单行输入不换行。
5、设置文字间隔:
我们可以通过下述两个属性来设置字的间距:
android:textScaleX="1.5"//设置字与字的水平间隔
6、带表情的EditText的简单实现:
相信大家对于QQ或者微信很熟悉吧,我们发送文本的时候可以连同表情一起发送,有两种简单的实现方式:1.使用SpannableString来实现;2.使用Html类来实现。这里笔者用的是第一种,这里只实现一个简单的效果,大家可以把方法抽取出来,自定义一个EditText; 也可以自己动手写个类似于QQ那样有多个表情选择的输入框!看下效果图(点击添加表情即可完成表情添加):
代码实现:
package com.example.administrator.helloworld;import android.graphics.drawable.Drawable;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.text.Spannable;import android.text.SpannableString;import android.text.style.ImageSpan;import android.view.View;import android.widget.Button;import android.widget.EditText;public class MainActivity_EditText extends AppCompatActivity { private EditText editText_test; private Button bt_add_expression; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main__edit_text); editText_test = (EditText) findViewById(R.id.editText_test); editText_test.requestFocus(); bt_add_expression = (Button) findViewById(R.id.button_add_expression); bt_add_expression.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SpannableString spanStr = new SpannableString("image"); Drawable drawable = getResources().getDrawable(R.drawable.fadai); drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); ImageSpan span = new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE); spanStr.setSpan(span, 0, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); int cursor = editText_test.getSelectionStart(); editText_test.getText().insert(cursor, spanStr); } }); }}
PS:对了,别忘了放上一个小图片哦~
7、设置EditText获得焦点,同时弹出小键盘
首先要在手机的设置上把实体键盘给关了,这样子才可以弹出软键盘,具体见下面图片说明:
让EditText获得焦点与清除焦点的 :
edit.requestFocus(); //请求获取焦点
edit.clearFocus(); //清除焦点
低版本的系统直接requestFocus就会自动弹出小键盘了
稍微高一点的版本则需要我们手动地去弹键盘:
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0,InputMethodManager.HIDE_NOT_ALWAYS);
8、带删除按钮的EditText
我们常常在App的输入界面上看到:
当我们输入内容后,右面会出现这样一个小叉叉的图标,我们点击后会清空输入框中的内容! 实现起来其实也很简单: 为EditText设置addTextChangedListener,然后重写TextWatcher()里的抽象方法,这个用于监听输入框变化的。
实现代码:
package com.example.administrator.helloworld;import android.graphics.drawable.Drawable;import android.net.Uri;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.text.Editable;import android.text.Spannable;import android.text.SpannableString;import android.text.TextWatcher;import android.text.style.ImageSpan;import android.view.View;import android.widget.Button;import android.widget.EditText;import com.google.android.gms.appindexing.Action;import com.google.android.gms.appindexing.AppIndex;import com.google.android.gms.common.api.GoogleApiClient;public class MainActivity_EditText extends AppCompatActivity { private EditText editText_search; private Button bt_clear; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main__edit_text); editText_search = (EditText) findViewById(R.id.editText_search); editText_search.addTextChangedListener(textWatcher); bt_clear = (Button) findViewById(R.id.button_clear); bt_clear.setVisibility(View.INVISIBLE); bt_clear.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { editText_search.setText(""); } }); } TextWatcher textWatcher = new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { if (s.length() == 0) {//当输入框没有任何东西的时候,不显示清空按钮 bt_clear.setVisibility(View.INVISIBLE); } else {//有东西的时候,才显示清空按钮 bt_clear.setVisibility(View.VISIBLE); } } };}
布局文件:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout 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" tools:context="com.example.administrator.helloworld.MainActivity_EditText"> <EditText android:id="@+id/editText_search" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_toStartOf="@+id/button_clear" android:hint="搜索" /> <Button android:id="@+id/button_clear" android:layout_width="35dp" android:layout_height="35dp" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_alignTop="@+id/editText_search" android:background="@drawable/delete" /></RelativeLayout>
运行效果:
0 0
- 【5】EditText——输入框
- EditText(输入框)详解
- EditText(输入框)详解
- EditText(输入框)
- 输入框EditText
- 自定义EditText输入框
- 栗子—EditText简单实现输入搜索
- 修改andriod源码计算器——EditText、文本框、输入框最大输入数提示
- EditText弹出输入框问题
- EditText自动弹出输入框
- 【Android】输入框控件EditText
- EditText隐藏输入弹出框?
- Edittext实现密码输入框
- Android EditText输入框问题
- android输入框EditText详解
- Android基础入门教程——2.3.2 EditText(输入框)详解
- Android基础——自定义EditTExt实现去掉输入框添加下划线
- 点击EditText外隐藏EditText和输入框
- 功能测试(二)软件的易用性
- 动画之逐帧
- 【算法】矩阵走法问题
- 内存中的堆与栈到底是怎么回事?
- getRecordArray
- 【5】EditText——输入框
- 使用Windows Live Writer离线写csdn博客
- 水木社区上看到的一道概率题
- iPhone计步器
- 自动增长字段
- hdu 1561 The more, The Better 树形dp
- MongoDB的简单操作
- 朴素贝叶斯分类器本质上是线性分类器
- hdu 1050 Moving Tables