EditText控件用于获取用户的输入
继承自TextView 因此自动继承了android:text属性、获取控件文本内容的getText()方法和设置控件文本内容的setText()方法
常用属性:
android:text
android:hint 用于设置显示在EditText上的提示信息
android:numeric 只能用于输入数字
android:maxLength 限制编辑框中输入的字数
android:password 密码模式
android:lines 可输入的行数
实例:用EditText实现微博评论界面的限制
要求提示输入的文字数 并且最多只能为140字
超过字数不能提交并显示警告信息
首先我们定义一个界面布局
由一个EditText框 两个TextView框 一个按钮 组成
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/etText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ems="10"
android:lines="8"
android:hint="请输入评论内容"
android:maxLength="140">
<requestFocus />
</EditText>
<LinearLayout 注意:这个LinearLayout 表示TextView和按钮Button是水平排列的
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout 注意:这个LinearLayout 表示两个TextView是上下垂直排列的
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/tvMsg1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/tvMsg2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
<Button
android:id="@+id/btnSend"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btnSend"
android:paddingRight="15dip"
/>
</LinearLayout>
</LinearLayout>
然后我们在代码中实现EditText的事件监听
public class EditTest extends Activity{
private EditText edContent=null;
private TextView tvContent=null; //第一行TextView
用于显示字数提示:字数统计:25/140字
private TextView tvMsg=null; //第二行TextView
用于显示警告信息:还可输入:115字 或 最多只能输入140字
private Button btnSend=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.eidt_layout);
edContent=(EditText) findViewById(R.id.etText);
tvContent=(TextView) findViewById(R.id.tvMsg1);
tvMsg=(TextView) findViewById(R.id.tvMsg2);
btnSend=(Button) findViewById(R.id.btnSend);
edContent.addTextChangedListener(new TextWatcher() { //注意: 这里是EditText 的监听和回调方法
@Override
public void onTextChanged(CharSequence str, int arg1, int arg2, int arg3) {
//EditText 回调方法要实现3个方法
一般我们实现onTextChanged
int len=str.length();
tvContent.setText("字数统计:"+len+"/140");
//当字数达到140时显示警告信息
if(len==140){
tvMsg.setText("输入的字数已达到上限!");
}else{
tvMsg.setText("还可以输入:"+(140-len)+"个字");
}
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
}
@Override
public void afterTextChanged(Editable arg0) {
}
});
btnSend.setOnClickListener(new OnClickListener() {
//按钮的监听和回调方法
@Override
public void onClick(View arg0) {
int len=edContent.getText().toString().length(); //获得输入的长度
if(len==0 || "请输入评论内容".equals(edContent.getText())){
Toast.makeText(EditTest.this, "评论内容不能为空", 2000).show();
}else{
Toast.makeText(EditTest.this, "发表成功!", 2000).show();
}
}
});
}