根據老羅視頻學習總結。
在TextView項目的基礎上增加Menu按鈕“EditText練習”選項,點擊後彈出新的EditDemoActivity,在新的Activity裏做EditText練習。
一.在EditText添加表情圖片。
EditDemoActivity關聯的佈局文件是editdemoactivity.xml文件,放置一個EditText控件和一個Button控件。
如下:
<?xml version="1.0" encoding="utf-8"?>
<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/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="30sp"
android:ems="10" >
<requestFocus />
</EditText>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"//按鈕置於佈局中間
android:textSize="30sp"
android:text="添加QQ表情" />
</LinearLayout>
EditDemoActivity.java內容如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//設置關聯佈局文件
setContentView(R.layout.editdemoactivity);
editText = (EditText)findViewById(R.id.editText1);
button = (Button)findViewById(R.id.button1);
//設置button控件的點擊事件
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
int randId = 1+ new Random().nextInt(9);//隨機數是從0開始產生的,所以要加1,0到8的隨機數
try {
//獲取這個圖像的域
Field field = R.drawable.class.getDeclaredField("face" + randId);
//獲取資源ID
int resourceId = Integer.parseInt(field.get(null).toString());
//在Android中要顯示圖片信息,必須使用Bitmap位圖對象來加載
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), resourceId);
//用圖片代替文字
ImageSpan imageSpan = new ImageSpan(EditDemoActivity.this, bitmap);
//
SpannableString spannableString = new SpannableString("face");
spannableString.setSpan(imageSpan, 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
editText.append(spannableString);
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
效果圖如下,點擊按鈕,會隨機在EditText中加載圖片:
二.在EditText控件輸入特定的字符,並實現校驗功能。
在佈局文件中,通過屬性android:digits;或者android:inputType;來規範輸入EditText的格式。
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content"
android:textSize="15sp" android:text="使用android:digits屬性(輸入數字)"></TextView>
<EditText android:id="@+id/editText2"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_margin="10dp" android:digits="0123456789"></EditText>//規範只能輸入0-9的數字
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content"
android:textSize="15sp" android:text="使用android:digits屬性(輸入26個小寫字母)"></TextView>
<EditText android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_margin="10dp" android:digits="qwertyuiopasdfghjklzxcvbnm"></EditText>//規範只能輸入小寫字母
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content"
android:textSize="15sp" android:text="使用android:inputType屬性(輸入數字)"></TextView>
<EditText android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_margin="10dp" android:inputType="number|textCapCharacters"></EditText>//只能輸入數字
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content"
android:textSize="15sp" android:text="使用android:inputType屬性(輸入Email)"></TextView>
<EditText android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_margin="10dp" android:inputType="textEmailAddress"></EditText>//輸入郵件
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content"
android:textSize="15sp" android:text="使用android:numeric屬性(輸入有符號的浮點數)"></TextView>
<EditText android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_margin="10dp" android:numeric="decimal|signed"></EditText>//輸入浮點數
<Button android:id="@+id/button2" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_gravity="center"
android:background="#ffff00"
android:text="確認"></Button>
android:digitis限制只能輸入指定的字符;
android:inputType類型見這個鏈接:http://blog.csdn.net/chaod5659/article/details/17117193
就通過屬性來設置輸入的字符類型。
java中內容如下:
button2 = (Button)findViewById(R.id.button2);
editText2 = (EditText)findViewById(R.id.editText2);
button2.setOnClickListener(new View.OnClickListener() {
//設置監聽器
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
String str = editText2.getText().toString();
//trim函數,移除字符串兩邊的空白字符或者其他預定義字符
if(str==null||str.trim().equals("")){
editText2.setError("請輸入內容");
}
}
});
點擊按鈕後,如果第一個EditText框爲空的,那麼會彈出提示框。
效果圖如下:
三.使用AutoCompleteTextView控件和MuilAutoCompleteTextView控件。
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="AutoCompleteTextView" />
<AutoCompleteTextView android:id="@+id/autotext"
android:layout_width="fill_parent" android:layout_height="wrap_content"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="MultiAutoCompleteTextView" />
<MultiAutoCompleteTextView android:id="@+id/multext"
android:layout_width="fill_parent" android:layout_height="wrap_content"/>
autoCompleteTextView = (AutoCompleteTextView)findViewById(R.id.autotext);
String[] autoStrings = new String[]{"聯合國","聯合國安理會","聯合國五個常任理會","Google","Google Map"};
//第二個參數表示適配器的下拉風格
ArrayAdapter<String> adapter = new ArrayAdapter<String>(AutoCompleteActivity.this, android.R.layout.simple_dropdown_item_1line,autoStrings);
autoCompleteTextView.setAdapter(adapter);
multiAutoCompleteTextView = (MultiAutoCompleteTextView)findViewById(R.id.multext);
multiAutoCompleteTextView.setAdapter(adapter);
//CommaTokenizer內部類
multiAutoCompleteTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
效果:
第二個逗號必須是英文逗號,否則不能實現多個自動補全