Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android學習指南之九:Button、TextView、EditView、CheckBox、RadioGroup、ImageView、ImageButton

Android學習指南之九:Button、TextView、EditView、CheckBox、RadioGroup、ImageView、ImageButton

編輯:關於android開發

       本節繼續講解用戶界面的相關內容,主要包括Button、TextView、EditView、CheckBox、RadioGroup、ImageView和ImageButton。

       一、Button按鈕

       按鈕是程序中最常見的一個元素,我們通過一個例子感受一下,代碼的講解都寫在注釋裡了,所以我就直接上代碼和代碼的運行結果。

Java代碼
  1. package android.basic.lesson9;   
  2.   
  3. import android.app.Activity;   
  4. import android.os.Bundle;   
  5. import android.view.View;   
  6. //不熟悉內部類的朋友可以留意一下這裡的導入方式   
  7. import android.view.View.OnClickListener;   
  8. import android.widget.Button;   
  9. import android.widget.TextView;   
  10.   
  11. public class MainHelloButton extends Activity {   
  12.     /** Called when the activity is first created. */  
  13.     @Override  
  14.     public void onCreate(Bundle savedInstanceState) {   
  15.         super.onCreate(savedInstanceState);   
  16.         setContentView(R.layout.main);   
  17.   
  18.        //實現一個多按鈕可用的單擊監聽器對象   
  19.        OnClickListener listener = new Button.OnClickListener(){   
  20.                         @Override  
  21.                         public void onClick(View v) {   
  22.                                 setTitle("您的答案是:"+((TextView)v).getText());   
  23.                         }   
  24.        };   
  25.   
  26.        //為界面中的每個按鈕綁定上這個單擊監聽器   
  27.        findViewById(R.id.Button01).setOnClickListener(listener);   
  28.        findViewById(R.id.Button02).setOnClickListener(listener);   
  29.        findViewById(R.id.Button03).setOnClickListener(listener);   
  30.     }   
  31. }  

       下面是布局文件:

XML/HTML代碼
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <linearlayout android:layout_height="fill_parent" android:layout_width="fill_parent" android:gravity="center" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android">  
  3.         <textview android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/TextView01" android:text="杜鵑不啼,如何讓它啼?" android:textsize="20sp" android:layout_marginbottom="10dp">  
  4.         </textview>  
  5.   
  6.         <button android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/Button01" android:text="殺之不足惜!" android:textsize="20sp">  
  7.         </button>  
  8.   
  9.         <button android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/Button02" android:text="誘之自然啼!" android:textsize="20sp">  
  10.         </button>  
  11.   
  12.                 <button android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/Button03" android:text="待之莫須急!" android:textsize="20sp">  
  13.         </button>  
  14. </linearlayout>  

        下面就是運行效果:

Android學習指南之九:Button、TextView、EditView、CheckBox、RadioGroup、ImageView、ImageButton

       點擊某個按鈕之後,標題欄發生變化:

Android學習指南之九:Button、TextView、EditView、CheckBox、RadioGroup、ImageView、ImageButton

       我們可以留意到 OnClickListener 是View的一個內部接口,也留意到想更改某個Activity的標題欄,可以用setTitle的方法直接設置。 如果看源代碼的話我們也可以留意到Button是我們下面要講的TextView的子類,對句話你有個印象就行了。

       二、TextView文本框

      我們在很早以前的例子裡已經開始使用TextView這個組件,足可見他應用之廣泛。它的用處就是顯示文本,它也是最基本的一個視圖組件。我們有必要看一下TextView的繼承關系:

Android學習指南之九:Button、TextView、EditView、CheckBox、RadioGroup、ImageView、ImageButton

       從上圖看到Button、EditText、CheckBox、RadioButton等等常用組件都是TextView的直接子類或間接子類,因此我們本講裡TextView內容雖然不多,但是這個組件大家還是要處處留意,逐步加深對TextView類的理解。下面我們舉一個例子,來看一下TextView,並認識一下使用setMovementMethod()方法實現文本可滾動,下面看代碼:

Java代碼
  1. package android.basic.lesson9;   
  2.   
  3. import android.app.Activity;   
  4. import android.os.Bundle;   
  5. import android.text.method.ScrollingMovementMethod;   
  6. import android.widget.TextView;   
  7.   
  8. public class HelloTextView extends Activity {   
  9.     /** Called when the activity is first created. */  
  10.     @Override  
  11.     public void onCreate(Bundle savedInstanceState) {   
  12.         super.onCreate(savedInstanceState);   
  13.         setContentView(R.layout.main);   
  14.   
  15.         //找到TextView組件   
  16.         TextView tv = (TextView)findViewById(R.id.TextView01);   
  17.   
  18.         //設置移動方法   
  19.         tv.setMovementMethod(ScrollingMovementMethod.getInstance());   
  20.     }   
  21. }  

       main.xml代碼:

XML/HTML代碼
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <linearlayout android:layout_height="fill_parent" android:layout_width="fill_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android">  
  3. <textview android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/TextView01" android:text="@string/hello" android:textsize="30sp">  
  4. </textview></linearlayout>  

       長長的關於馮諾依曼的文本我就不粘貼了,它定義在strings.xml文件裡。下面是顯示效果:

Android學習指南之九:Button、TextView、EditView、CheckBox、RadioGroup、ImageView、ImageButton

       我們知道在TextView外層套一個ScrollView也可以實現文本滾動的,同學們自己可以實現一下,然後對比其顯示效果有何不同(某一個帶滾動條)。

       三、EditView可編輯文本框

       我們通過一個例子來介紹一下EditView。

       1、新建一個項目,在main.xml中添加一個EditText。

XML/HTML代碼
  1. <EditText       
  2. android:text=""       
  3. android:id="@+id/EditText01"      
  4. android:hint="隨便輸點什麼然後按回車"    android:layout_width="fill_parent"    android:layout_height="wrap_content">  
  5. </EditText>  

       其中,android:hint屬性就是沒有輸入內容之前的提示內容,hint英文的意思也是暗示之意。

       2、在onCreate()方法中添加如下代碼:

Java代碼
  1. //找到xml中定義的EditText   
  2. final EditText et = (EditText) findViewById(R.id.EditText01);   
  3. et.setOnKeyListener(new View.OnKeyListener() {   
  4.   
  5.         @Override  
  6.         public boolean onKey(View v, int keyCode, KeyEvent event) {   
  7.                 //監視硬鍵盤按鍵   
  8.                 if(event.getAction()== KeyEvent.ACTION_DOWN && keyCode== KeyEvent.KEYCODE_ENTER){   
  9.                         //按住把EditView中的文版顯示在吐司消息中   
  10.                         Toast.makeText(MainHelloEditView.this, et.getText(),   
  11.                                         Toast.LENGTH_SHORT).show();   
  12.                         //返回true說明你已經處理了這個事件並且它應該就此終止,如果返回false就表示此事件還需要繼續傳遞下去   
  13.                         return true;   
  14.                 }   
  15.                 return false;   
  16.         }   
  17. });  

       3、運行程序,輸入一些文字之後按回車鍵看看效果:

Android學習指南之九:Button、TextView、EditView、CheckBox、RadioGroup、ImageView、ImageButton

      有興趣的同學可以把toast後面的return true換成 return false看看效果,再按OK鍵呼出軟鍵盤試試。

      四、ImageView 圖片框,ImageButton 圖片按鈕

      我們通過一個例子來看一下ImageView和ImageButton的應用。

Java代碼
  1. package android.basic.lesson9;   
  2.   
  3. import android.app.Activity;   
  4. import android.os.Bundle;   
  5. import android.view.MotionEvent;   
  6. import android.view.View;   
  7. import android.view.View.OnClickListener;   
  8. import android.view.View.OnTouchListener;   
  9. import android.widget.ImageButton;   
  10. import android.widget.ImageView;   
  11. import android.widget.Toast;   
  12.   
  13. public class MainHelloImageButton extends Activity {   
  14.         /** Called when the activity is first created. */  
  15.         @Override  
  16.         public void onCreate(Bundle savedInstanceState) {   
  17.                 super.onCreate(savedInstanceState);   
  18.                 setContentView(R.layout.main);   
  19.   
  20.                 // 找到xml中的ImageButton和ImageView   
  21.                 final ImageButton ib = (ImageButton) findViewById(R.id.ImageButton01);   
  22.                 final ImageView iv = (ImageView) findViewById(R.id.ImageView01);   
  23.   
  24.                 // 定義觸摸監聽   
  25.                 OnTouchListener otl = new OnTouchListener() {   
  26.                         @Override  
  27.                         public boolean onTouch(View v, MotionEvent event) {   
  28.                                 switch (v.getId()) {   
  29.                                 case R.id.ImageButton01:   
  30.                                         Toast.makeText(getApplicationContext(), "觸摸"+((ImageView)v).getId(),   
  31.                                                         Toast.LENGTH_LONG).show();   
  32.                                         break;   
  33.                                 case R.id.ImageView01:   
  34.                                         Toast.makeText(getApplicationContext(), "觸摸"+((ImageView)v).getId(),   
  35.                                                         Toast.LENGTH_LONG).show();   
  36.                                         break;   
  37.                                 }   
  38.                                 return false;   
  39.                         }   
  40.                 };   
  41.   
  42.                 // 定義點擊監聽   
  43.                 OnClickListener ocl = new OnClickListener() {   
  44.                         @Override  
  45.                         public void onClick(View v) {   
  46.                                 Toast.makeText(getApplicationContext(), "點擊"+((ImageView)v).getId(),   
  47.                                                 Toast.LENGTH_LONG).show();   
  48.                         }   
  49.                 };   
  50.   
  51.                 // 綁定監聽   
  52.                 ib.setOnClickListener(ocl);   
  53.                 ib.setOnTouchListener(otl);   
  54.                 iv.setOnClickListener(ocl);   
  55.                 iv.setOnTouchListener(otl);   
  56.         }   
  57. }  

       main.xml配置:

XML/HTML代碼
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <linearlayout android:layout_height="fill_parent" android:layout_width="fill_parent" android:gravity="center" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android">  
  3.   
  4.         <imagebutton android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/ImageButton01" android:layout_marginbottom="10dp" android:src="@drawable/android_normal">  
  5.                 </imagebutton>  
  6.         <imageview android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/ImageView01" android:src="@drawable/android_normal">  
  7.                 </imageview>  
  8. </linearlayout>  

       運行效果:

Android學習指南之九:Button、TextView、EditView、CheckBox、RadioGroup、ImageView、ImageButton

       通過這個例子大家可以體會一下OnTouch和OnClick事件之間的區別。

       五、CheckBox選擇框

       我們也是使用一個例子來演示選擇框,請在這裡例子裡留意onClickListener和onCheckedChangeListener的區別。

Java代碼
  1. package android.basic.lesson9;   
  2.   
  3. import android.app.Activity;   
  4. import android.os.Bundle;   
  5. import android.view.View;   
  6. import android.view.View.OnClickListener;   
  7. import android.widget.Button;   
  8. import android.widget.CheckBox;   
  9. import android.widget.CompoundButton;   
  10. import android.widget.CompoundButton.OnCheckedChangeListener;   
  11. import android.widget.Toast;   
  12.   
  13. public class MainHelloCheckBox extends Activity {   
  14.         /** Called when the activity is first created. */  
  15.         @Override  
  16.         public void onCreate(Bundle savedInstanceState) {   
  17.                 super.onCreate(savedInstanceState);   
  18.                 setContentView(R.layout.main);   
  19.   
  20.                 //聲明對象   
  21.                 final CheckBox cb1 = (CheckBox) findViewById(R.id.CheckBox01);   
  22.                 final CheckBox cb2 = (CheckBox) findViewById(R.id.CheckBox02);   
  23.   
  24.                 //聲明監聽器   
  25.                 OnClickListener ocl = new OnClickListener() {   
  26.   
  27.                         @Override  
  28.                         public void onClick(View v) {   
  29.                                         if(!((CheckBox)v).isChecked()){   
  30.                                         Toast.makeText(MainHelloCheckBox.this, "\""+((Button)v).getText()+"\"被取消",   
  31.                                                         Toast.LENGTH_SHORT).show();   
  32.                                         }   
  33.                         }   
  34.                 };   
  35.   
  36.                 OnCheckedChangeListener occl = new OnCheckedChangeListener() {   
  37.   
  38.                         @Override  
  39.                         public void onCheckedChanged(CompoundButton buttonView,   
  40.                                         boolean isChecked) {   
  41.                                 if(isChecked){   
  42.                                         Toast.makeText(MainHelloCheckBox.this, "\""+buttonView.getText()+"\"被選擇",   
  43.                                                         Toast.LENGTH_SHORT).show();   
  44.                                 }   
  45.                         }   
  46.                 };   
  47.   
  48.                 //綁定監聽器   
  49.                 cb1.setOnCheckedChangeListener(occl);   
  50.                 cb2.setOnCheckedChangeListener(occl);   
  51.                 cb1.setOnClickListener(ocl);   
  52.                 cb2.setOnClickListener(ocl);   
  53.         }   
  54. }  

       main.xml的代碼:

XML/HTML代碼
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <linearlayout android:layout_height="fill_parent" android:layout_width="fill_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android">  
  3. <textview android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/TextView01" android:text="選擇你想得到的東西:">  
  4. <checkbox android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/CheckBox01" android:text="得不到">  
  5. </checkbox>  
  6. <checkbox android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/CheckBox02" android:text="已失去">  
  7. </checkbox>  
  8. </textview></linearlayout>  

       運行效果如下圖,點擊選擇和取消選擇都會觸發事件,做出消息提示,請留意之間的異同。

Android學習指南之九:Button、TextView、EditView、CheckBox、RadioGroup、ImageView、ImageButton

       六、RadioGroup單選組和RadioButton單選按鈕

       在這一小節裡,我們創建一個RadioGroup組件和他的兩個子元素RadioButton,實現單選效果。

       1、新建一個項目,打開res/layout/main.xml 添加如下代碼:

XML/HTML代碼
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <linearlayout android:layout_height="fill_parent" android:layout_width="fill_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android">  
  3.     <radiogroup android:layout_height="wrap_content" android:layout_width="fill_parent" android:orientation="vertical">  
  4.       <radiobutton android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/radio_red" android:text="紅">  
  5.       <radiobutton android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/radio_blue" android:text="藍">  
  6.     </radiobutton></radiobutton></radiogroup>  
  7. </linearlayout>  

       添加android:checked=”true”可以做一個默認選中項,如果不增加的話默認都不是選中狀態。(讀者可以試一下兩個單選鈕都設置了選中狀態時,會有什麼結果,思考一下為什麼是這樣。)

       2、在Acticity裡處理一下點擊事件:

Java代碼
  1. package android.basic.lesson9;   
  2.   
  3. import android.app.Activity;   
  4. import android.os.Bundle;   
  5. import android.view.View;   
  6. import android.view.View.OnClickListener;   
  7. import android.widget.RadioButton;   
  8. import android.widget.Toast;   
  9.   
  10. public class MainHelloRadioGroup extends Activity {   
  11.         /** Called when the activity is first created. */  
  12.         @Override  
  13.         public void onCreate(Bundle savedInstanceState) {   
  14.                 super.onCreate(savedInstanceState);   
  15.                 setContentView(R.layout.main);   
  16.   
  17.                 final RadioButton radio_red = (RadioButton) findViewById(R.id.radio_red);   
  18.                 final RadioButton radio_blue = (RadioButton) findViewById(R.id.radio_blue);   
  19.   
  20.                 OnClickListener ocl = new OnClickListener() {   
  21.   
  22.                         @Override  
  23.                         public void onClick(View v) {   
  24.                         Toast.makeText(MainHelloRadioGroup.this, ((RadioButton)v).getText(), Toast.LENGTH_SHORT).show();   
  25.   
  26.                         }   
  27.                 };   
  28.   
  29.                 radio_red.setOnClickListener(ocl);   
  30.                 radio_blue.setOnClickListener(ocl);   
  31.         }   
  32. }  

       3、運行程序,查看結果:

Android學習指南之九:Button、TextView、EditView、CheckBox、RadioGroup、ImageView、ImageButton

       本講內容比較多,例子也比較多,大家可以多做練習來加深理解和提高熟練度,並留意一些常用屬性的設置。這節課就到這裡吧。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved