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

介绍下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.csdn.net/download/alex0203/3731182

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值