Android控件开发之二----EditTextView

本文详细介绍了Android中EditText组件的各种属性和使用方法,包括显示行数、背景设置、提示信息、字符限制等,并提供了一个完整的拨号盘UI设计实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍下EditText

在EditView继承与TextView,在官方文档中写的如下:

EditText is a thin veneer over TextView that configures itself to be editable.


下面介绍下EditText的属性


1.EditTex的UI 上只显示4行(只得不是内容只有4行)

<EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:lines="4" android:text="@string/hello" />

2.EditTex的背景(修改主题)
<EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/ic_launcher" android:singleLine="true" android:text="@string/hello" />


3.EditTex在没有显示内容时,显示提示信息

<EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="hint" />

4.EditTex显示最多显示三行(字符个数未限制)
<EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:maxLines="3" android:text="@string/hello" />

5.EditText最少显示两行(字符个数未限制)
<EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:minLines="2" android:text="@string/hello" />


6.EditText禁用(类似与TextView)

<EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:enabled="false" android:text="@string/hello" />


7.EditText最多输入5个字符
<EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:maxLength="5" android:text="@string/hello" />


8.EditText文字过多时如何显示(但是本人为实现,请指教

<EditText android:layout_width="200dip" android:layout_height="wrap_content" android:singleLine="true" android:text="@string/hello" android:ellipsize="end"/>


9.EditText的任何位置上放一个图(控件未实现)

<!--android:drawableRight,在editveiw的右边放一个图或者控件 --> <EditText android:id="@+id/drawLeft" android:layout_width="fill_parent" android:layout_height="wrap_content" android:drawableRight="@drawable/ic_launcher" android:text="@string/hello"/>


10.EditText禁止编辑(不能输入和删除,但是长按得conetct menu是有效的)
<EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:editable="false" android:text="@string/hello"/>


11.EditText(不知道具体是什么功能android:contentDescription
<EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:soundEffectsEnabled="true" android:fitsSystemWindows="true" android:contentDescription="@string/hello"/>


12.EditText(android:tag)
<!-- android:tag 设置一个文本标签。可以通过View.getTag()或 for with View.findViewWithTag()检索含有该标签字符串的View。但 一般最好通过ID来查询View,因为它的速度更快,并且允 许编译时类型检查。 -->


13.EditText控制数据的输入类型(inpuType)

<EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputType="time"/>" <!-- 注1--> 注1:

inpuType的值(这是官网提供的)

http://developer.android.com/reference/android/widget/TextView.html


14.EditText输入限定属性

android:digits="13123" (限定能输入的字符)
android:numeric="integer"(限定能输入的整型)
android:phoneNumber="true"(限定能输入手机号码)
 

15.EditText的相关方法editTextTest = (EditText)findViewById(R.id.drawLeft); // 获取光标的所在位置 int index = editTextTest.getSelectionStart(); // 设置贯光标的位置 editTextTest.setSelection(index+1);

16.EditAble类的相关方法

(1)在editText中的指定位置插入数据

mEditViewPhoneNum.getText().insert(index, "9").toString();(2)在editText中的指定区域间替换数据
mEditViewPhoneNum.getText().replace(index - 1, index,""); 还有一些方法这里不举例,后面附带一个手机拨号盘的ui设计代码: public class CallDemoActivity extends Activity { private EditText mEditViewPhoneNum; private Button[] mBtnArr = new Button[13]; private String mStrNum = ""; private boolean mCallPanelIsHiden = false; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.call); mEditViewPhoneNum = (EditText) findViewById(R.id.edit_mobile); mEditViewPhoneNum.setInputType(InputType.TYPE_NULL); mBtnArr[0] = (Button) findViewById(R.id.num0); mBtnArr[1] = (Button) findViewById(R.id.num1); mBtnArr[2] = (Button) findViewById(R.id.num2); mBtnArr[3] = (Button) findViewById(R.id.num3); mBtnArr[4] = (Button) findViewById(R.id.num4); mBtnArr[5] = (Button) findViewById(R.id.num5); mBtnArr[6] = (Button) findViewById(R.id.num6); mBtnArr[7] = (Button) findViewById(R.id.num7); mBtnArr[8] = (Button) findViewById(R.id.num8); mBtnArr[9] = (Button) findViewById(R.id.num9); mBtnArr[10] = (Button) findViewById(R.id.callup); mBtnArr[11] = (Button) findViewById(R.id.hide); mBtnArr[12] = (Button) findViewById(R.id.delete); ButtonListener buttonListener = new ButtonListener(); mBtnArr[0].setOnClickListener(buttonListener); mBtnArr[1].setOnClickListener(buttonListener); mBtnArr[2].setOnClickListener(buttonListener); mBtnArr[3].setOnClickListener(buttonListener); mBtnArr[4].setOnClickListener(buttonListener); mBtnArr[5].setOnClickListener(buttonListener); mBtnArr[6].setOnClickListener(buttonListener); mBtnArr[7].setOnClickListener(buttonListener); mBtnArr[8].setOnClickListener(buttonListener); mBtnArr[9].setOnClickListener(buttonListener); mBtnArr[10].setOnClickListener(buttonListener); mBtnArr[11].setOnClickListener(buttonListener); mBtnArr[12].setOnClickListener(buttonListener); mBtnArr[12].setOnLongClickListener(new OnLongClickListener() { @Override public boolean onLongClick(View v) { if (v.getId() == R.id.delete) { mStrNum = ""; mEditViewPhoneNum.setText(mStrNum); return true; } return false; } }); } private class ButtonListener implements Button.OnClickListener { @Override public void onClick(View v) { int index = mEditViewPhoneNum.getSelectionStart(); switch (v.getId()) { case R.id.num0: { mEditViewPhoneNum.getText().insert(index, "0").toString(); mEditViewPhoneNum.setSelection(index + 1); } break; case R.id.num1: { mEditViewPhoneNum.getText().insert(index, "1").toString(); mEditViewPhoneNum.setSelection(index + 1); } break; case R.id.num2: { mEditViewPhoneNum.getText().insert(index, "2").toString(); mEditViewPhoneNum.setSelection(index + 1); } break; case R.id.num3: { mEditViewPhoneNum.getText().insert(index, "3").toString(); mEditViewPhoneNum.setSelection(index + 1); } break; case R.id.num4: { mEditViewPhoneNum.getText().insert(index, "4").toString(); mEditViewPhoneNum.setSelection(index + 1); } break; case R.id.num5: { mEditViewPhoneNum.getText().insert(index, "5").toString(); mEditViewPhoneNum.setSelection(index + 1); } break; case R.id.num6: { mEditViewPhoneNum.getText().insert(index, "6").toString(); mEditViewPhoneNum.setSelection(index + 1); } break; case R.id.num7: { mEditViewPhoneNum.getText().insert(index, "7").toString(); mEditViewPhoneNum.setSelection(index + 1); } break; case R.id.num8: { mEditViewPhoneNum.getText().insert(index, "8").toString(); mEditViewPhoneNum.setSelection(index + 1); } break; case R.id.num9: { mEditViewPhoneNum.getText().insert(index, "9").toString(); mEditViewPhoneNum.setSelection(index + 1); } break; case R.id.delete: { mStrNum = mEditViewPhoneNum.getText().toString(); if (mStrNum.length() > 0) { if (index > 0) { mEditViewPhoneNum.getText().replace(index - 1, index, ""); mEditViewPhoneNum.setSelection(index - 1); } } } break; case R.id.hide: { if (mCallPanelIsHiden) { for (int i = 0; i < mBtnArr.length - 1; i++) { mBtnArr[i].setVisibility(View.VISIBLE); } mBtnArr[12].setId(R.id.delete); mBtnArr[12].setText("X"); mCallPanelIsHiden = false; } else { for (int i = 0; i < mBtnArr.length - 1; i++) { mBtnArr[i].setVisibility(View.GONE); } mBtnArr[12].setId(R.id.hide); mBtnArr[12].setText("Hide"); mCallPanelIsHiden = true; } } break; case R.id.callup: { mStrNum = mEditViewPhoneNum.getText().toString(); if (mStrNum.equals("")) { Toast.makeText(CallDemoActivity.this, "手机号码不能为空!", Toast.LENGTH_LONG).show(); } else { mStrNum = ""; mEditViewPhoneNum.setText(mStrNum); } } break; default: break; } } } }
以及对应的call.xml<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:drawSelectorOnTop="true" android:cacheColorHint="#00000000" > </ListView> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentTop="false" android:stretchColumns="*"> <TableRow> <RelativeLayout android:id="@+id/content" android:layout_width="fill_parent" android:layout_span="3"> <EditText android:id="@+id/edit_mobile" android:layout_width="fill_parent" android:layout_height="wrap_content" android:singleLine="true" android:scrollHorizontally="true" android:editable="false" android:textSize="30dip" /> <Button android:layout_alignParentRight="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/delete" android:text="X" android:textSize="30dip" android:textStyle="bold" /> </RelativeLayout> </TableRow> <TableRow > <Button android:id="@+id/num1" android:text="1" android:layout_width="1dip" android:textSize="20dip" android:textStyle="bold" /> <Button android:id="@+id/num2" android:text="2" android:layout_width="1dip" android:textSize="20dip" android:textStyle="bold" /> <Button android:id="@+id/num3" android:layout_height="wrap_content" android:layout_width="1dip" android:text="3" android:textStyle="bold" android:textSize="20dip"> </Button> </TableRow> <TableRow > <Button android:id="@+id/num4" android:layout_width="1dip" android:text="4" android:textSize="20dip" android:textStyle="bold" /> <Button android:id="@+id/num5" android:layout_width="1dip" android:text="5" android:textSize="20dip" android:textStyle="bold" /> <Button android:id="@+id/num6" android:layout_width="1dip" android:text="6" android:textStyle="bold" android:textSize="20dip" android:layout_height="wrap_content"> </Button> </TableRow> <TableRow > <Button android:id="@+id/num7" android:layout_width="1dip" android:text="7" android:textSize="20dip" android:textStyle="bold" /> <Button android:id="@+id/num8" android:text="8" android:textSize="20dip" android:textStyle="bold" /> <Button android:id="@+id/num9" android:layout_height="wrap_content" android:layout_width="1dip" android:text="9" android:textStyle="bold" android:textSize="20dip"> </Button> </TableRow> <TableRow> <Button android:id="@+id/callup" android:layout_width="1dip" android:text="call up" android:textSize="20dip" android:textStyle="bold" android:textColor="#33FF00" /> <Button android:id="@+id/num0" android:layout_width="1dip" android:text="0" android:textSize="20dip" android:textStyle="bold" /> <Button android:id="@+id/hide" android:layout_width="1dip" android:text="Hide" android:textSize="20dip" android:textStyle="bold" /> </TableRow> </TableLayout> </RelativeLayout>


这里要做个修改:

拨号盘的例子的xml中,button属性的android:layout_width="1dip"改成android:layout_weight="1d"


请大家多多指教,有问题请联系邮箱,或者留言、

邮箱:ligexiao@gmail.com


源代码下载地址:http://download.youkuaiyun.com/download/alex0203/3731182

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值