android基本控件EditText

根據老羅視頻學習總結。


在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());


效果:







第二個逗號必須是英文逗號,否則不能實現多個自動補全














發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章