EidtText
来源:互联网 发布:最好的c语言编译器 编辑:程序博客网 时间:2024/05/17 05:08
概述
EditText是TextView的子类,因此TextView的一切xml属性同样也适用于EditText.
EidtText
像QQ一样输入表情图片
Demo:
public class InputTextAndPicAct extends Activity { private EditText et_input; private Button btn_insert; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_input_text_and_pic); initView(); } private void initView() { et_input = (EditText) findViewById(R.id.id_et_inputMess); btn_insert = (Button) findViewById(R.id.id_btn_insertPic); } /** * 在xml中配置了android:onClick属性,监听点击事件 * * @param view */ public void insertPic(View view) { // 随机产生1到10的整数 int random = 1 + new Random().nextInt(10); LogUtils.d("随机产生的整数:" + random); try { // 根据随机产生的整数从R.drawable类中获取相应的资源ID的Field对象 Field field = R.drawable.class.getField("gur_project_" + random); // 获取资源id,也就是静态变量的值 int resourceId = Integer.parseInt(field.get(null).toString()); // 根据资源ID获取图像的Bitmap对象 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), resourceId); // 根据Bitmap创建ImageSpan对象 ImageSpan imageSpan = new ImageSpan(this,bitmap); // 创建一个SpannableString对象,以便插入用ImageSpan对象封装的图像 String text = "gur_project_"; SpannableString spannableString = new SpannableString(text); // 用ImageSpan替换gur-project- spannableString.setSpan(imageSpan,0,text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 将随机获取的图像追加到EditText控件后 et_input.append(spannableString); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } }}
XML:
<?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" android:background="#000"> <EditText android:id="@+id/id_et_inputMess" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp" android:background="#FFF" android:minLines="4" android:gravity="left|top" android:padding="10dp" /> <Button android:id="@+id/id_btn_insertPic" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/id_et_inputMess" android:layout_margin="10dp" android:background="#FFF" android:padding="10dp" android:onClick="insertPic" android:text="随机插入表情" /></RelativeLayout>
在<EditText>
标签中我们设置了android:gravity的属性为left|top,以便输入的文本从左上角开始显示。因为设置了最小显示4行,如果不设置改属性,会从左侧中心位置开始显示,如果是单行就不会存在这个问题了。
我们将<Button>
标签的android:onClick属性指定了单击事件的方法insertPic,在该方法中,随机获取gur_project_1到gur_project_10的任意一个资源的ID, 最常用的作法是将这个10个图片的资源ID放到一个数据里面,然后随机产生一个数组索引获取相应的资源ID,但是我们并没有采用这种方式,而是采用了直接通过反射技术从R.drawable类中获取图像资源ID的方法。 这种方法的好处是一旦图像非常的多,可以不需要在数组中逐个定义就可以获取到对应的资源ID了。
我们使用ImageSpan类来直接插入图像,当然了我们也可以采用<img>
标签在EditText控件中插入图片,只是复杂一些,本案例没有采用。
注意事项:
- 由于R.drawable类中的资源ID都是public 的静态变量,因此我们可以直接使用Field.get方法获取这些变量的值。 如果是private或者protected类型的变量,需要field.setAccessible(true)来获取访问权限。
- 使用Field.get方法获取变量时,如果是静态变量,Field.get方法的参数可以设置为null即可,如果不是静态变量,则需要为Field.get方法指定一个变量所在类的对象作为参数值。
- 使用EditText类不能直接插入Span对象,因此需要先使用SpannableString对象来封装Span对象(例如本例中的ImageSpan对象),再将SpannableString对象插入到EditText控件中。
在EditText中输入特定的字符
EditText控件中可以通过多种方式指定允许输入的字符,比如指向输入0~9的数字
三种方式:
- android:digits属性设置为0123456789
- android:inputType属性设置为number
- android:numeric设置为integer
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#000" android:orientation="vertical" android:padding="10dp"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp" android:background="#FFF" android:text="使用android:digits属性(输入数字)" /> <EditText style="@style/bg_white" android:layout_width="match_parent" android:layout_height="wrap_content" android:digits="0123456789" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" style="@style/bg_white" android:text="使用adnroid:digits属性输入26个英文小写字母"/> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" style="@style/bg_white" android:digits="abcdefghijklmnopqrstuvwxyz"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp" android:background="#FFF" android:text="使用android:inputType属性(输入数字)" /> <EditText style="@style/bg_white" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="number" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp" android:background="#FFF" android:text="使用android:inputType属性(输入Email)" /> <EditText style="@style/bg_white" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="textEmailAddress" /></LinearLayout><!--android 1.5以后添加了软件虚拟键盘的功能,所以在输入提示中将会有对应的软键盘模式android中inputType属性在EditText输入值时启动的虚拟键盘的风格有着重要的作用。这也大大的方便的操作。有时需要虚拟键盘只为字符或只为数字。所以inputType尤为重要。<EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputType="phone" />//文本类型,多为大写、小写和数字符号。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" 拼音输入//数值类型android:inputType="number" 数字android:inputType="numberSigned" 带符号数字格式android:inputType="numberDecimal" 带小数点的浮点格式android:inputType="phone" 拨号键盘android:inputType="datetime" 时间日期android:inputType="date" 日期键盘android:inputType="time" 时间键盘android:hint="" 是editText的一个提示 如:editText显示提示:请输入帐号! 当点击editText时这个文字会消失。-->
当界面后面的EditText控件中的输入文本的时候会弹出系统软键盘,并且整个界面会上衣,以便显示当前正处于焦点的EditText,如果处于某种需要,不想让界面上移,可以使用getWindows().setSoftInputMode()将输入法模式设置为WindowManager,LayoutParamas.SOFT_INPUT_ADJSUT_RESIZE.
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
AutoCompleteTextView和MultiAutoCompleteTextView
AutoCompleteTextView是对EditText的扩展,它的父类是EditText.
- 使用AutoCompleteTextView标签
- 为AutoCompleteTextView设置adapter
public class AutoCompleteTextViewAct extends Activity { private AutoCompleteTextView actv ; private MultiAutoCompleteTextView mActv; private String[] array = new String[]{"周杰伦","周公举","周恩来","Google","Google Map","Google Android","Java"};; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_auto_complete_text_view); initView(); initViewMulti(); } private void initView() { actv = (AutoCompleteTextView)findViewById(R.id.id_actv); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,array); actv.setAdapter(adapter); } private void initViewMulti() { mActv = (MultiAutoCompleteTextView) findViewById(R.id.id_actv_multi); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,array); mActv.setAdapter(adapter); // 指定多个字符串的分隔符为逗号 mActv.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer()); }}
- EidtText
- EidtText trim();
- EidtText获取焦点的方法
- TextView和EidtText使用技巧
- EidtText 输入框的各种风格
- Android 禁上EidtText获得默认焦点
- EidtText设置字数输入限制的代码
- Android软键盘隐藏,遮挡EidtText解决办法
- 基本组件之EidtText的使用
- android 中限制 eidttext输入emjoy表情
- Android软键盘隐藏,遮挡EidtText解决办法
- Android的EidtText的一些研究,持续更新中!!!!!
- Android软键盘弹出遮挡EidtText的解决方法
- EidtText和textview中内容过长的话自动换行
- 用EidtText发送Emoji表情需要注意的问题
- 一个小白从零基础自学Android编程笔记之如何设置EidtText的边框
- EidtText(打开界面隐藏,点击的时候软键盘不遮盖掉输入框)
- EidtText可编辑不可点击和可点击不可编辑终极版。
- android代码测试界面 ( ActivityInstrumentationTestCase2 )
- LightOj 1188 树状数组
- H5页面设计
- 数据结构_8:查找:二叉排序树
- UVA 19889 组合数学
- EidtText
- Leetcode: Odd Even Linked List
- mod_rewrite
- 控制流【重学C之三】
- H5页面设计
- #枚举和排序 B - ID Codes
- 字体造成卡顿
- vim实现类似UE的查询复制功能
- 数据库实体间三种对应关系:一对一,一对多,多对多