Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android常見控件初探

Android常見控件初探

編輯:關於Android編程

溫故而知新。最近復習了一些android常用控件,接下來,根據android 官方API,總結一下它們的一些常見用法。(開發測試環境為Android4.4)

一、TextView

由官方的關系圖可以看出,TextView繼承View類,直接子類有Button,CheckedTextView等,間接子類有AutoCompleteTextView, CheckBox等。

下面列舉一些TextView常見的xml屬性:

android:text                TextView顯示的文字
android:textColor           TextView文字的顏色
android:textAppearance      TextView文字的一些綜合屬性,例如color,typeface,size,style
android:textStyle           文字字體(normal正常,bold粗體,italic斜體)
android:textSize            文字大小,一般單位用sp為最佳,原因問度娘。

在Java代碼裡在onCreate方法裡添加以下代碼即可。其中setText是修改TextView文字的方法。

textview=(TextView)findViewById(R.id.textview);
textview.setText(我是TextView嗎?);

二、Button

由上圖可以看出,Button繼承於TextView,這裡有個疑問,為什麼Button可以設置文字而ImageButton不能?咱們先放一放,等會再談。
它的子類家族都是什麼我想不用我重復了吧。值得一提的是CompoundButton(這個我也沒用過,API介紹它有選定和未選定的兩種狀態,是CheckBox的父類,長啥樣我也沒見過,我猜測是個抽象類,如果不對歡們歡迎指出)
常見的xml屬性用法如下:

Button的關鍵用法在於監聽器的設置,下面是官方的實例:

public class MyActivity extends Activity {
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
         setContentView(R.layout.content_layout_id);

final Button button = (Button) findViewById(R.id.button_id);
button.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                 // Perform action on click
             }
         });
     }
 }

這裡關於Button監聽器我要多說兩句,以上的那種設置監聽的方法是當我們布局中監聽事件比較少的情況下用的,如果當Button特別多的時候,如果一個個實現,代碼過於繁瑣,所以我在我的demo中又寫了一種設置監聽方法,大家可以下載源碼看看。

三、ImageButton

大家注意一下ImageButton的父類,你會發現ImageButton繼承的是ImageView,而Button是TextView,看到這裡你是不是已經明白了為什麼ImageButton不能設置文字而Button可以,對,形象點說就叫做”子承父業”。就軟件美觀來說,我更傾向於用ImageButton,為什麼?因為它可以用圖片啊!可以做美觀的點擊效果啊,但是,Button也有它獨特的用處,有更大的可擴展性。
下面我介紹一下ImageButton的常見用法,
首先是它的一些常見屬性:

這裡的background屬性中如果你用一張圖片寫死的話,ImageButton是沒有點擊效果的,因為它就相當於一個ImageView。這裡的drawable並不是我們放圖片的那個文件夾,那麼這裡的drawable是哪裡來的呢?我們在res文件夾裡新建一個名為drawable文件夾,再建一個名為btn_select.xml文件。

在btn_select.xml文件中寫如下配置屬性:


 
     
    

其實還有一種方法可以實現點擊效果,在Java代碼中加上

img_btn1.setOnTouchListener(new OnTouchListener() {

            @Override
public boolean onTouch(View v, MotionEvent event) {
                // TODO 自動生成的方法存根
            if(event.getAction()==MotionEvent.ACTION_DOWN)
                img_btn1.setImageDrawable(getResources().getDrawable(R.drawable.stop_btn_down));
                else
                img_btn1.setImageDrawable(getResources().getDrawable(R.drawable.start_btn_up));
                return false;
            }
});

咱們先不說它的效果和維護如何如何,想想看如果你有5個以上按鈕的話……
就代碼量而言就讓人望而卻步了吧,所以建議用方法一。

四、ToggleButton

這個非常簡單,先上效果圖:

一些常用的xml屬性:

android:textOn     當按鈕被選定時顯示的文字
android:textOff     當按鈕未被選定時顯示的文字

Java實現代碼:

togglebutton=(ToggleButton)findViewById(R.id.toggleButton);
togglebutton.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                // TODO 自動生成的方法存根
                togglebutton.setChecked(isChecked);
                imageview.setBackgroundColor(isChecked?Color.BLUE:Color.GREEN);
            }
});

五、ImageView

沒啥可說的,就是顯示圖片的一個控件。

六、CheckBox

和ToggleButton 一樣都繼承於CompoundButton,兩者的屬性也幾近相似。
Java實現代碼:

checkbox=(CheckBox)findViewById(R.id.checkBox);
checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                // TODO 自動生成的方法存根
                Toast.makeText(getApplicationContext(), isChecked?CheckBox被選中了:CheckBox取消了, Toast.LENGTH_LONG).show();
            }
        });

七、RadioButton

和CheckBox一樣,用法也幾近相似:

radiobutton=(RadioButton)findViewById(R.id.radioButton);
radiobutton.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
         public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                // TODO 自動生成的方法存根
                Toast.makeText(getApplicationContext(), isChecked?RadioButton被選中了:RadioButton取消了, Toast.LENGTH_LONG).show();
            }
        });

八、EditText

先看效果圖:

EditText繼承於TextView,是用於獲取用戶輸入內容的控件。

常見的xml屬性:

 android:maxLines     輸入框最大的行數
 android:minLines     輸入框最小的行數
 android:password     輸入內容是否加密
 android:text         默認的輸入內容
 android:inputType    輸入內容的類型 
 android:hint         默認提示,hint和text的差別是,前者你點擊輸入框提示文字會消失,而後者會在提示文字後接著輸入

Java代碼常用實現方法:

editText=(EditText)findViewById(R.id.editText);
editText.getText().toString()
//這是獲取EditText控件輸入字符的方法,比較常用

九、TimePiker 時間拾取器

從官方介紹中可以看出它繼承於幀布局,也就是說它內部實現了框架布局。時間拾取器可以獲取小時,分鐘,以及AM/PM。
它在Java代碼中的常用實現方法

timepicker=(TimePicker)findViewById(R.id.timePicker1);
timepicker.setIs24HourView(true);
//選擇12小時制還是24小時制,如果12小時制會顯示AM/PM,24小時則不會。
timepicker.getCurrentHour();//獲得小時0-23
timepicker.getCurrentMinute();//獲得分鐘
timepicker.setCurrentHour(12);//設置小時
timepicker.setCurrentMinute(12);//設置分鐘
timepicker.setOnTimeChangedListener(new OnTimeChangedListener() {

            @Override
            public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
                // TODO 自動生成的方法存根
Toast.makeText(getApplicationContext(), 選擇時間是+hourOfDay+:+minute, Toast.LENGTH_LONG).show();
            }
        });

十、DatePicker日期拾取器

和TimePicker一樣繼承於幀布局,常用的xml屬性有
Java實現代碼:

datePicker=(DatePicker)findViewById(R.id.datePicker);
datePicker.init(2015, 3, 9, new OnDateChangedListener() {

            @Override
            public void onDateChanged(DatePicker view, int year, int monthOfYear,
                    int dayOfMonth) {
                // TODO 自動生成的方法存根
                Toast.makeText(getApplicationContext(), 選擇時間是+year+年+monthOfYear+月+dayOfMonth+日, Toast.LENGTH_LONG).show();
            }
        });

十一、Spinner 下拉列表

因為只是基本用法,所以這裡我用最簡單的ArrayAdapter進行適配數據。

第1步: 首先先在布局文件中添加Spinner:

 

第2步: 建立數據源,使用數組,這些數據將會在Spinner下來列表中進行顯示。在Values下創建一個名為array.xml文件




    
        上海
        北京
        深圳
    

第3步: 接著在Activity中加入如下的代碼(使用了系統定義的下拉列表的布局文件,當然也可以自定義)

spinner=(Spinner)findViewById(R.id.spinner);
//得到數據源
final String []items=getResources().getStringArray(R.array.spinner_items);
//創建Adapter並綁定數據源,
ArrayAdapter adapter=new ArrayAdapter(getApplicationContext(),android.R.layout.simple_spinner_dropdown_item, items);
//為Spinner綁定Adapter
spinner.setAdapter(adapter);
//設置監聽
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView parent, View view,
                    int position, long id) {
                // TODO 自動生成的方法存根
                Toast.makeText(getApplicationContext(), 選擇的城市是+items[position], Toast.LENGTH_LONG).show();
            }

            @Override
            public void onNothingSelected(AdapterView parent) {
                // TODO 自動生成的方法存根

            }
        });

十二、 SeekBar 拖動條


由上圖看出,它繼承於ProgressBar,實際上長得也挺像的。

實際上,它的用法非常簡單,首先現在布局文件裡添加控件屬性

``````

然後在Java代碼中添加監聽器監聽三個事件,開始拖動、結束拖動、以及現在拖動的進度,值為1-100

seekBar=(SeekBar)findViewById(R.id.seekBar);
seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                // TODO 自動生成的方法存根
                Toast.makeText(getApplicationContext(), SeekBar END!, Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
                // TODO 自動生成的方法存根
                Toast.makeText(getApplicationContext(), SeekBar Start!, Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onProgressChanged(SeekBar seekBar, int progress,
                    boolean fromUser) {
                // TODO 自動生成的方法存根
                Toast.makeText(getApplicationContext(), progress+%, Toast.LENGTH_SHORT).show();
            }
        });

十三、Switch

是一種開關的控件,繼承於Button的子類CompoundButton:

用法也非常簡單,首先在布局文件裡添加

在Java代碼裡添加監聽即可

switch_btn=(Switch)findViewById(R.id.switch1);
switch_btn.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                // TODO 自動生成的方法存根
                Toast.makeText(getApplicationContext(), isChecked?Switch打開了:Switch關閉了, Toast.LENGTH_SHORT).show();
            }
        });

 

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