Android控件用法总结之EditText

最近毕业设计也快做完了,因为也是边学Android边做毕设,而且也因为是初学,所以用了比较长时间,现在也是希望记下这段时间写Android的一些技巧方法或者是问题。

首先是关于EditText这个控件,这个控件用的也是非常普遍的,毕竟是程序用于和用户进行交互的一个重要控件。

1.取消EditText自动获取焦点的默认行为
一般在一进入有EditText的界面时,EditText就会自动获取焦点,但有时候我们并不希望EditText这种默认行为。

在网上搜了下,发现这种方法是有效的:
在EditText的父控件中加入这段代码:

android:focusable="true";
android:focusableInTouchMode="true";

这样就可以让EditText不会自动获取焦点了。
完整的xml代码如下:

 <LinearLayout
        android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:focusable="true"android:focusableInTouchMode="true" ><EditText
            android:id="@+id/edit"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:hint="搜索内容"android:singleLine="true"android:textColor="@android:color/black"android:textSize="20sp" /><Button
            android:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:gravity="center"android:text="搜索"android:textSize="20sp" /></LinearLayout>

2.Eclipse 在xml布局文件中,一旦采用了EditText控件后,可视化视图中就会出现
Exception raised during rendering:java.lang.System.arraycopy([CI[CII)V

Exception details are logged in Window > Show View > Error Log

这个问题,并且也无法看到布局,只能在模拟器上看,但每次仅仅修改下布局就要启动模拟器来查看布局,会非常不方便,于是也上网查了下,发现其实只要修改下不同的API即可,如下图:
这里写图片描述

只要修改成其他API就可以显示。

3.关于AlertDialog中自定义布局带有的EditText无法弹出键盘
这个之前总结过了,Android学习问题:关于AlertDialog中自定义布局带有的EditText无法弹出键盘

4.关于选择部分或全选文本,以及光标位置问题

(1)选择部分文本和全选:

EditText txt = (EditText) findViewById(R.id.edit);txt.setText("hello!");//txt.setSelection(0, 3);//此方法等同于下面Selection类的方法Selection.setSelection(txt.getEditableText(), 0,3);//全选txt.selectAll();

(2).光标位置的设置

//设置光标位置在最后的位置
txt.setSelection(txt.length());
//Selection.setSelection(etSelection.getEditableText(), 3);//设置光标在第三个字符后面

所以这里分别用了两种方式,一种是直接通过EditText的setSelection方法,另一种则是采用Selection类的setSelection的方法,这两种方法的具体定义如下:

void android.widget.EditText.setSelection(int start, int stop)
public void setSelection (int start, int stop) void android.text.Selection.setSelection(Spannable text, int start, int stop)
public static void setSelection (Spannable text, int start, int stop) 

start:表示选择文本开始的位置;
stop:表示选择文本结束的位置,实际上选择的文本数就是stop-start,也可以说是索引值从start—(stop-1)的范围。

而两种方式的setSelection方法在只有一个int索引值时就是表示设置光标的位置,其int参数就是光标偏离值。

5.对EditText控件内容的监听方法:

EditText txt = (EditText) findViewById(R.id.edit);
txt.addTextChangedListener(new TextWatcher() {@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {// TODO Auto-generated method stub}@Overridepublic void beforeTextChanged(CharSequence s, int start, int count,int after) {// TODO Auto-generated method stub}@Overridepublic void afterTextChanged(Editable s) {// TODO Auto-generated method stub}});

还有就是对搜索框内容的清除,参考自Android开发中的一个小功能 清空搜索框的文字

暂时总结到这,未完待续…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409153.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js 循环拆词_javascript forEach通用循环遍历方法

循环遍历一个元素是开发中最常见的需求之一&#xff0c;那么让我们来看一个由框架BASE2和Jquery的结合版本吧.上一次的错误太多&#xff0c;排版也出现了问题&#xff0c;重写了一遍&#xff0c;希望大家支持.循环遍历一个元素是开发中最常见的需求之一&#xff0c;那么让我们来…

解决Tocmat6.x的catalina.out日志不断增加问题

实际的线上环境&#xff0c;如果使用tomcat作为运行容器&#xff0c;需要注意默认的tomcat的日志配置&#xff0c;在线上很容易导致产生大量垃圾log&#xff0c;有可能会导致tomcat不堪重负而down掉&#xff0c; 为了避免产生上述问题&#xff0c;则需要进行配置调整。 修改$TO…

Python 学习笔记(1)

最近开始学习Python&#xff0c;早早听说这是一门高效率的编程语言&#xff0c;据说可以用几行代码就实现如Java语言需要写几十行代码才实现的功能&#xff0c;加上这门语言在图像分类等方向应用得很多&#xff0c;所以就提前学习下。 原本计划是看《Head First Python》的&…

android image设置adjustviewbounds_探索 Android 平台的 CameraX

前言如果你曾经用过 Android 的 Camera APIs&#xff0c;你可能已经感受到了&#xff0c;它们一直没有成为最容易实现的东西。最开始是 Camera API&#xff0c;然后又推荐使用 Camera2 API — 这个升级是为了让开发者在使用 Android 的相机 API 时有更好的体验。然而&#xff0…

一行语句让你的浏览器变成记事本

Jose Jesus Perez Aguinaga : One line browser notepad&#xff0c; 只需要在浏览器地址栏键入&#xff1a; data:text/html, <html contenteditable>转载于:https://www.cnblogs.com/fresky/archive/2013/01/31/2886837.html

c++opencv汉字分割_机器学习小白,还不快pick一下——【视觉与图像:阈值分割】...

“前言&#xff1a;安利Python来开发OpenCV的原因其实细心的小伙伴早在?【视觉与图像】PythonOpenCV教程入门篇就找到了想要的答案。(点蓝字即可打开)”今天周五了&#xff01;今天还不下雨&#xff01;&#xff01;今天又可以更新了&#xff01;&#xff01;&#xff01;先前…

python学习笔记--理解生成器

在学习python的时候&#xff0c;刚开始接触生成器&#xff08;generator&#xff09;这个概念的时候&#xff0c;其实还是不太能理解&#xff0c;感觉并没有完全掌握&#xff0c;今天看到这篇文章的时候&#xff0c;感觉对这个概念真的是有了进一步的了解&#xff0c;感觉生成器…

再不努力我就老了

借用李宇春歌里的一句话&#xff0c;再不疯狂我们就老了。。。再不努力青春就没了。。。 今天在浏览校内时&#xff0c;发现右下角滚动的照片中&#xff0c;竟有一张是关于自己的&#xff0c;那是自己5年前的照片&#xff0c;满脸的稚嫩&#xff0c;连自己都承认那时的自己真的…

mysql主键外键_MySQL主键和外键使用及说明

摘自网上一个经典的例子&#xff1a;大哥和小弟一、外键约束MySQL通过外键约束来保证表与表之间的数据的完整性和准确性。外键的使用条件&#xff1a;1.两个表必须是InnoDB表&#xff0c;MyISAM表暂时不支持外键(据说以后的版本有可能支持&#xff0c;但至少目前不支持)&#x…

python学习笔记--迭代器

转载自理解Python的迭代器 首先&#xff0c;廖雪峰老师的教程中解释了迭代器和生成器&#xff0c;这篇文章只是补充和我个人的总结。 什么是迭代 可以直接作用于for循环的对象统称为可迭代对象(Iterable)。 可以被next()函数调用并不断返回下一个值的对象称为迭代器(Iterat…

【转载】周鸿祎:做产品体验先把自己切换到二傻子模式

我唯一能自吹的地方&#xff0c;就是本人在互联网里可能犯的错最多&#xff0c;挨的骂最多&#xff0c;然后也经历了很多失败&#xff0c;所以这样才有一些真实的感受。 建议大家把《定位》和《创新者的窘境》、《创新者的解答》这几本书放在身边反复读。你经历得越多&#xff…

mysql临时关闭索引功能_MYSQL中常用的强制性操作(例如强制索引)

mysql常用的hint对于经常使用oracle的朋友可能知道&#xff0c;oracle的hint功能种类很多&#xff0c;对于优化sql语句提供了很多方法。同样&#xff0c;在mysql里&#xff0c;也有类似的hint功能。下面介绍一些常用的。强制索引 FORCE INDEX复制代码代码如下:SELECT * FROM TA…

python学习--windows下安装Numpy包的错误:Unable to find vcvarsall.bat

今天在安装numpy包的时候&#xff0c;无论是通过pip install numpy 还是上网下载numpy包后安装都是出现问题&#xff1a;error: Unable to find vcvarsall.bat&#xff0c;于是百度了下&#xff0c;看到Windows下安装Python包(Numpy)的错误&#xff1a;Unabletofindvcvarsall.b…

使用多行sql字符串时,要注意不要忽略了空格

使用李刚老师编著的《疯狂Java讲义》&#xff08;第2版&#xff09;学习MySql数据库与JDBC编程&#xff08;使用Java 7 &#xff09;&#xff0c;其中第601页的ConnMySql.java 程序代码在Eclipse上运行&#xff0c;出现错误。 import java.sql.*; public class ConnMySql{publi…

Python学习笔记---理解zip()函数

转载自Python零碎知识(2):强大的zip 一、代码引导 首先看这一段代码&#xff1a; 1 >>> name(jack,beginman,sony,pcky)2 >>> age(2001,2003,2005,2000)3 >>> for a,n in zip(name,age):4 print a,n5 6 输出&#xff1a;7 jack 20018 beginma…