一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

TextView ? { Android學(xué)習(xí)指南 }

 muyable 2013-12-11

lesson9_view

本講內(nèi)容:Button TextView EditView CheckBox RadioGroup ImageView ImageButton

一、Button 按鈕

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

01package android.basic.lesson9;
02 
03import android.app.Activity;
04import android.os.Bundle;
05import android.view.View;
06//不熟悉內(nèi)部類的朋友可以留意一下這里的導(dǎo)入方式
07import android.view.View.OnClickListener;
08import android.widget.Button;
09import android.widget.TextView;
10 
11public 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       //實(shí)現(xiàn)一個(gè)多按鈕可用的單擊監(jiān)聽器對象
19       OnClickListener listener = new Button.OnClickListener(){
20            @Override
21            public void onClick(View v) {
22                setTitle("您的答案是:"+((TextView)v).getText());            
23            }
24       };
25        
26       //為界面中的每個(gè)按鈕綁定上這個(gè)單擊監(jiān)聽器
27       findViewById(R.id.Button01).setOnClickListener(listener);
28       findViewById(R.id.Button02).setOnClickListener(listener);
29       findViewById(R.id.Button03).setOnClickListener(listener);
30    }
31}

下面是布局文件:

01<?xml version="1.0" encoding="utf-8"?>
02<linearlayout android:layout_height="fill_parent" android:layout_width="fill_parent" android:gravity="center" android:orientation="vertical" xmlns:android="http://schemas./apk/res/android">
03    <textview android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/TextView01" android:text="杜鵑不啼,如何讓它啼?" android:textsize="20sp" android:layout_marginbottom="10dp">
04    </textview>
05     
06    <button android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/Button01" android:text="殺之不足惜!" android:textsize="20sp">
07    </button>
08 
09    <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     
15</linearlayout>

再下面就是運(yùn)行效果: image 點(diǎn)擊某個(gè)按鈕之后,標(biāo)題欄發(fā)生變化: image

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

二、TextView 文本框

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

@6HOBQ[UICK{U%8%YIP0Y~V

從上圖看到Button、EditText、CheckBox、RadioButton等等常用組件都是TextView的直接子類或間接子類,因此我們本講里TextView內(nèi)容雖然不多,但是這個(gè)組件大家還是要處處留意,逐步加深對TextView類的理解。

下面我們舉一個(gè)例子,來看一下TextView,并認(rèn)識一下使用setMovementMethod()方法實(shí)現(xiàn)文本可滾動,下面看代碼:

01package android.basic.lesson9;
02 
03import android.app.Activity;
04import android.os.Bundle;
05import android.text.method.ScrollingMovementMethod;
06import android.widget.TextView;
07 
08public class HelloTextView extends Activity {
09    /** 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        //設(shè)置移動方法
19        tv.setMovementMethod(ScrollingMovementMethod.getInstance());       
20    }
21}

main,xml代碼:

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./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>

長長的關(guān)于馮諾依曼的文本我就不粘貼了,它定義在strings.xml文件里。下面是顯示效果:

image

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

三、EditView 可編輯文本框

我們通過一個(gè)例子來介紹一下EditView。

1、新建一個(gè)項(xiàng)目,在main.xml中添加一個(gè)EditText。

<EditText

    android:text=""

    android:id="@+id/EditText01" 
    android:hint="隨便輸點(diǎn)什么然后按回車"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content">

</EditText>

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

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

01//找到xml中定義的EditText
02final EditText et = (EditText) findViewById(R.id.EditText01);
03et.setOnKeyListener(new View.OnKeyListener() {
04 
05    @Override
06    public boolean onKey(View v, int keyCode, KeyEvent event) {
07        //監(jiān)視硬鍵盤按鍵
08        if(event.getAction()== KeyEvent.ACTION_DOWN && keyCode== KeyEvent.KEYCODE_ENTER){
09            //按住把EditView中的文版顯示在吐司消息中
10            Toast.makeText(MainHelloEditView.this, et.getText(),
11                    Toast.LENGTH_SHORT).show();
12            //返回true說明你已經(jīng)處理了這個(gè)事件并且它應(yīng)該就此終止,如果返回false就表示此事件還需要繼續(xù)傳遞下去
13            return true;
14        }
15        return false;
16    }
17});

3、運(yùn)行程序,輸入一些文字之后按回車鍵看看效果:

image

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

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

我們通過一個(gè)例子來看一下ImageView和ImageButton的應(yīng)用。

01package android.basic.lesson9;
02 
03import android.app.Activity;
04import android.os.Bundle;
05import android.view.MotionEvent;
06import android.view.View;
07import android.view.View.OnClickListener;
08import android.view.View.OnTouchListener;
09import android.widget.ImageButton;
10import android.widget.ImageView;
11import android.widget.Toast;
12 
13public 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        // 定義觸摸監(jiān)聽
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        // 定義點(diǎn)擊監(jiān)聽
43        OnClickListener ocl = new OnClickListener() {
44            @Override
45            public void onClick(View v) {
46                Toast.makeText(getApplicationContext(), "點(diǎn)擊"+((ImageView)v).getId(),
47                        Toast.LENGTH_LONG).show();
48            }
49        };
50         
51        // 綁定監(jiān)聽
52        ib.setOnClickListener(ocl);
53        ib.setOnTouchListener(otl);
54        iv.setOnClickListener(ocl);
55        iv.setOnTouchListener(otl);
56    }
57}

main.xml配置:

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./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>

運(yùn)行效果:

image

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

五、CheckBox 選擇框

我們也是使用一個(gè)例子來演示選擇框,請?jiān)谶@里例子里留意 onClickListener和onCheckedChangeListener的區(qū)別

01package android.basic.lesson9;
02 
03import android.app.Activity;
04import android.os.Bundle;
05import android.view.View;
06import android.view.View.OnClickListener;
07import android.widget.Button;
08import android.widget.CheckBox;
09import android.widget.CompoundButton;
10import android.widget.CompoundButton.OnCheckedChangeListener;
11import android.widget.Toast;
12 
13public 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        //聲明監(jiān)聽器
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        //綁定監(jiān)聽器
49        cb1.setOnCheckedChangeListener(occl);
50        cb2.setOnCheckedChangeListener(occl);
51        cb1.setOnClickListener(ocl);
52        cb2.setOnClickListener(ocl);
53    }
54}

main.xml的代碼:

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./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>

運(yùn)行效果如下圖,點(diǎn)擊選擇和取消選擇都會觸發(fā)事件,做出消息提示,請留意之間的異同。

image

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

在這一小節(jié)里,我們創(chuàng)建一個(gè)RadioGroup組件和他的兩個(gè)子元素RadioButton,實(shí)現(xiàn)單選效果。

1、新建一個(gè)項(xiàng)目,打開res/layout/main.xml 添加如下代碼:

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./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="藍(lán)">         
6    </radiobutton></radiobutton></radiogroup>
7</linearlayout>

添加android:checked=”true”可以做一個(gè)默認(rèn)選中項(xiàng),如果不增加的話默認(rèn)都不是選中狀態(tài)。(讀者可以試一下兩個(gè)單選鈕都設(shè)置了選中狀態(tài)時(shí),會有什么結(jié)果,思考一下為什么是這樣。)

2、在Acticity里處理一下點(diǎn)擊事件:

01package android.basic.lesson9;
02 
03import android.app.Activity;
04import android.os.Bundle;
05import android.view.View;
06import android.view.View.OnClickListener;
07import android.widget.RadioButton;
08import android.widget.Toast;
09 
10public 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、運(yùn)行程序,查看結(jié)果:

image

本講內(nèi)容比較多,例子也比較多,大家可以多做練習(xí)來加深理解和提高熟練度,并留意一些常用屬性的設(shè)置。

這節(jié)課就到這里吧。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    又大又紧又硬又湿又爽又猛| 男女一进一出午夜视频| 大香蕉精品视频一区二区| 亚洲中文字幕视频在线播放 | 色哟哟精品一区二区三区| 色综合伊人天天综合网中文 | 中文字幕乱码免费人妻av| 午夜精品国产一区在线观看| 精品一区二区三区不卡少妇av| 国产欧美一区二区三区精品视| 日韩精品视频一二三区| 白丝美女被插入视频在线观看| 日本加勒比在线观看不卡| 日本三区不卡高清更新二区| 国产成人免费激情视频| 国产成人精品午夜福利av免费| 91欧美激情在线视频| 欧美一区二区三区99| 男女午夜福利院在线观看| av国产熟妇露脸在线观看| 亚洲一区二区三区有码| 欧美在线观看视频免费不卡| 中文字幕亚洲人妻在线视频| 国产精品激情在线观看| 在线观看欧美视频一区| 日韩熟妇人妻一区二区三区| 中文字幕一二区在线观看| 丰满人妻一二区二区三区av| 五月天丁香亚洲综合网| 国产精品视频一区二区秋霞| 亚洲中文字幕在线视频频道| 午夜激情视频一区二区| 久热青青草视频在线观看| 成年午夜在线免费视频| 中文字幕一区二区久久综合| 黄色日韩欧美在线观看| 亚洲av熟女一区二区三区蜜桃| 欧美一区二区三区性视频| 欧美大胆美女a级视频| 精品一区二区三区不卡少妇av | 国产一级特黄在线观看|