今天主要介绍的UI组件为
EditText
会演示回车键的使用
自动完成输入内容的组件
1、回车键的使用
需要继承OnKeyListener接口
package cn.class3g.activity;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.Button;
import android.widget.EditText;
public class EditTextTestActivity extends Activity implements OnKeyListener{
Button btn = null;
EditText et = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.onkey_layout);
findViews();
}
private void findViews(){
btn = (Button) this.findViewById(R.id.button);
et = (EditText) this.findViewById(R.id.edit);
et.setOnKeyListener(this);
}
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_ENTER){
btn.setText(et.getText());
et.setVisibility(View.GONE);
btn.setVisibility(View.VISIBLE);
}
return true;
}
}
注:Visibility()有三种,分别为GONE,INVISIBLE,VISILBE
两种状态:可视,不可视
不可视有GONE,INVISIBLE.
GONE不可视,但是不占用位置
INVISIBLE不可视,但是但用位置
2.onkey_layout文件
<?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:orientation="vertical" >
<EditText
android:id="@+id/edit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Button"
android:id="@+id/button"
android:visibility="gone"
/>
</LinearLayout>
模拟器显示效果:
et.setVisibility(View.GONE);模式
点击手机键盘回车键
原来EditText被隐藏,EditText的text中的文本显示在button的text中
模拟器显示效果:
et.setVisibility(View.INVISIBLE);
自动完成输入内容的组件
1、Activity文件
package cn.class3g.activity;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.MultiAutoCompleteTextView;
public class AutoCompleteActivity extends Activity {
AutoCompleteTextView autoTx = null;
MultiAutoCompleteTextView mautoTx = null;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.auto_complete);
findViews();
String[] str = { "abc", "add", "axy", "aaaa", "bcd", "bbbd", "bdcc" };
ArrayAdapter adapter = new ArrayAdapter(this,
android.R.layout.simple_dropdown_item_1line, str);
autoTx.setAdapter(adapter);
//-------MulitAutoCompleteTextView
mautoTx.setAdapter(adapter);
mautoTx.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
}
private void findViews() {
autoTx = (AutoCompleteTextView) findViewById(R.id.autoTx);
mautoTx = (MultiAutoCompleteTextView) findViewById(R.id.mautoTx);
}
}
2、auto_complete.xml文件
<?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:orientation="vertical" >
<AutoCompleteTextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/autoTx"
/>
<MultiAutoCompleteTextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/mautoTx"
/>
</LinearLayout>
模拟器显示效果:
当输入bb时,底部自动出现代码中存入的字符串
注:如果在一个项目中创建了两个不同功能的Activity文件,在转换时应当对AdroidManifast.XML中的<intent-filter>做修改,将之移动到准备启动的<Activity>中,这点有时容易忽略,会造成模拟器错误。