Android常用控件的使用方法

新建一個(gè)項(xiàng)目UIWidgetTest整袁,簡(jiǎn)單起見坐昙,這里我們?cè)试SAndroid Studio自動(dòng)創(chuàng)建活動(dòng),活動(dòng)名和布局都使用默認(rèn)值

TextView

TextView可以說是最簡(jiǎn)單的一種控件了疾棵,下面來說TextView的更多用法痹仙,修改activity_main.xml中的代碼开仰,代碼如下所示

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/text_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="This is TextView!"
        android:gravity="center"
        android:textSize="24sp"
        android:textColor="#00ff00"/>

</LinearLayout>

android:layout_widthandroid:layout_height指定控件的寬度和高度,所有的控件都有這兩個(gè)屬性恩溅。

match_parent表示控件的大小和父布局的大小一樣脚乡,即控件的大小由父布局來決定滨达。

wrap_content表示控件的大小剛好能夠包含里面的內(nèi)容就可以了,即內(nèi)容決定控件的大小

android:text 指定TextView顯示的文本內(nèi)容窒典。

android:gravity 指定文字的對(duì)齊方式,可選值為top,bottom,left,right涩搓,center等,可以通過“|”來指定多個(gè)值良拼,TextView中的文字默認(rèn)左上角對(duì)齊庸推,我們這里指定為center,相當(dāng)于center_vertical|center_horizontal聋亡,即水平和垂直都居中對(duì)齊

android:textSizeandroid:textColor分別用來指定文字的大小和顏色坡倔,字體大小使用sp作為單位

運(yùn)行程序脖含,效果如下所示

image

當(dāng)然TextView中還有很多屬性养葵,這里不一一介紹,用的時(shí)候再去查看文檔

Button

Button是程序用于和用戶進(jìn)行交互的一個(gè)重要控件请契,它可配置的屬性和TextView差不多夏醉,我們?cè)?strong>activity_main.xml中加入Button

 <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAllCaps="false"
        android:text="Button"

/>

由于系統(tǒng)會(huì)對(duì)Button中的所有英文字母進(jìn)行大寫轉(zhuǎn)換畔柔,可以用android:textAllCaps="false"來禁用這一特性。重新運(yùn)行程序腮考,效果如下所示

image

接下來我們?cè)?strong>MainActivity對(duì)Button的點(diǎn)擊事件注冊(cè)一個(gè)監(jiān)聽器

public class MainActivity extends AppCompatActivity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //在此添加邏輯
            }
        });
    }
}

如果不喜歡用匿名類的方式注冊(cè)監(jiān)聽器踩蔚,可以使用實(shí)現(xiàn)接口的方式來注冊(cè)監(jiān)聽器枚粘,代碼如下所示


public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.button:
//                    業(yè)務(wù)邏輯
                break;
            default:
                break;
        }
    }
}

EditText

EditText是程序和用戶交互的另一個(gè)控件,它允許用戶在控件里輸入和編輯局骤,并可以在程序中對(duì)這些內(nèi)容進(jìn)行處理暴凑。

我們?cè)?strong>activity_main.xml添加EditText控件现喳,代碼如下所示

  <EditText
        android:id="@+id/edit_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:maxLength="2"
        android:hint="Type is here!"
        />

android:hint用于在輸入框中顯示一些提示性的文字

android:maxLength指定EditText最大行數(shù),這里為兩行泣洞,當(dāng)輸入的內(nèi)容超過兩行時(shí)球凰,文本會(huì)繼續(xù)向上滾動(dòng)腿宰,而EditText則不會(huì)繼續(xù)拉伸

我們還可以結(jié)合使用EditText和Button來完成一些功能吃度,比如通過點(diǎn)擊來Button來獲取EditText中的輸入的內(nèi)容,修改MainActivity的代碼如下

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private EditText editText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = (Button) findViewById(R.id.button);
          editText = (EditText) findViewById(R.id.edit_text);
        button.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.button:
                String text = editText.getText().toString();
                Toast.makeText(MainActivity.this, text, Toast.LENGTH_SHORT).show();
                break;
            default:
                break;
        }
    }
}

重新運(yùn)行程序伊者,效果如下所示

image

ImageView

ImageView用于在界面上展示圖片的控件

我們?cè)趓es/drawable目錄下添加兩張圖片

image

在activity_main.xml添加ImageView控件

 <ImageView
        android:id="@+id/image_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/image_1"
        />

android:src指定一張圖片

我們可以通過程序代碼來動(dòng)態(tài)更新圖片,修改MainActivity中的代碼汁尺,如下所示

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private EditText editText;
    private ImageView imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = (Button) findViewById(R.id.button);
        editText = (EditText) findViewById(R.id.edit_text);
        imageView = (ImageView) findViewById(R.id.image_view);
        button.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.button:
                imageView.setImageResource(R.drawable.image_2);
                break;
            default:
                break;
        }
    }
}

通過ImageView的setImageResource()方法將顯示的圖片改成image_2.png,重新運(yùn)行程序可以看到效果

image

ProgressBar

ProgressBar用于在程序中顯示一個(gè)進(jìn)度條搂蜓,表示程序正在加載

在activity_main.xml中添加代碼辽装,如下所示

    <ProgressBar
        android:id="@+id/progress_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />

重新運(yùn)行程序拾积,會(huì)看到屏幕中會(huì)有一個(gè)圓形進(jìn)度條正在旋轉(zhuǎn)

image

android:visibility可用來指定控件的可見屬性丰涉,所有的控件都有這個(gè)屬性,可選值有3個(gè):invisible玲销、visiblegone贤斜。

visible 表示控件可見,是默認(rèn)值猴抹。

invisible 表示控件不可見锁荔,但是它還占據(jù)著原來的位置和大小阳堕。

gone 表示不僅不可見,還不占用任何屏幕空間

我們還可以通過代碼來設(shè)置控件的可見性前普,使用的是 setVisibility() 方法壹堰,可選參數(shù)有3個(gè):View.VISIBLE贱纠、View.GONEView.INVISIBLE

接下來我們來實(shí)現(xiàn)點(diǎn)擊一下按鈕讓進(jìn)度條消失,再點(diǎn)擊一下讓按鈕出現(xiàn)這種效果目木,修改MainActivity中的代碼懊渡,如下所示

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private EditText editText;
    private ImageView imageView;
    private ProgressBar progressBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = (Button) findViewById(R.id.button);
        editText = (EditText) findViewById(R.id.edit_text);
        imageView = (ImageView) findViewById(R.id.image_view);
        progressBar = (ProgressBar) findViewById(R.id.progress_bar);
        button.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.button:
                imageView.setImageResource(R.drawable.image_2);
                if (progressBar.getVisibility() == View.GONE) {
                    progressBar.setVisibility(View.VISIBLE);
                } else {
                    progressBar.setVisibility(View.GONE);
                }
                break;
            default:
                break;
        }
    }
}

通過getVisibility() 方法來判斷ProgressBar是否可見剃执,若可見則隱藏肾档,若不可見則顯示出來辫继,重新運(yùn)行程序俗慈,不斷點(diǎn)擊按鈕闺阱,你會(huì)看到進(jìn)度條會(huì)在顯示和隱藏間來回切換

image

我們還可以通過style屬性來設(shè)置ProgressBar不同的樣式酣溃,下面我們來設(shè)置成水平進(jìn)度條,修改activity_main.xml中的代碼扛或,如下所示

 <ProgressBar
        android:id="@+id/progress_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        style="?android:attr/progressBarStyleHorizontal"
        android:max="100"
        />

android:max給進(jìn)度條設(shè)置一個(gè)最大值碘饼,然后代碼中動(dòng)態(tài)更改進(jìn)度條的進(jìn)度艾恼,修改MainActivity的代碼,如下所示

   @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.button:
//                動(dòng)態(tài)更新進(jìn)度條進(jìn)度
                int progress = progressBar.getProgress();
                progress=progress+10;
                progressBar.setProgress(progress);
                break;
            default:
                break;
        }
    }

每點(diǎn)擊一次按鈕秆吵,就會(huì)先獲取當(dāng)前進(jìn)度條的進(jìn)度纳寂,然后在現(xiàn)有進(jìn)度和基礎(chǔ)上加10作為更新后的進(jìn)度泻拦。重新運(yùn)行程序,效果如下所示

image

AlertDialog

AlertDialog可以在當(dāng)前頁面彈出一個(gè)對(duì)話框,在所有界面元素之上架曹,可以屏蔽掉界面其他控件的交互能力绑雄,因此AlertDialog一般用于提示一些非常重要的內(nèi)容或者警告信息。

下面我們來學(xué)習(xí)一下它的用法罗珍,修改MainActivity中的代碼,如下所示

 @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.button:
//                AlertDialog的學(xué)習(xí)
                AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
                dialog.setTitle("This is Title");
                dialog.setMessage("This is Message");
//                可否用Back鍵關(guān)閉對(duì)話框
                dialog.setCancelable(false);
//                設(shè)置確定按鈕的點(diǎn)擊事件
                dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                    }
                });
//                設(shè)置取消按鈕的點(diǎn)擊事件
                dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                    }
                });
//                將對(duì)話框顯示出來
                dialog.show();
                break;
            default:
                break;
        }
    }

首先通過AlertDialog.Builder 創(chuàng)建一個(gè) AlertDialog 實(shí)例,然后為這個(gè)對(duì)話框設(shè)置標(biāo)題扣唱、內(nèi)容画舌、可否用Back鍵關(guān)閉對(duì)話框等屬性已慢,再調(diào)用setPositiveButton() 方法設(shè)置對(duì)話框確認(rèn)按鈕的點(diǎn)擊事件佑惠,調(diào)用setNegativeButton() 方法設(shè)置對(duì)話框取消按按鈕的點(diǎn)擊事件,最后調(diào)用show() 方法將對(duì)話框顯示出來

image

ProgressDialog

ProgressDialog 跟AlertDialog很類似旭咽,不同的是ProgressDialog對(duì)話框中會(huì)有一個(gè)進(jìn)度條穷绵,表示當(dāng)前操作比較耗時(shí)特愿,讓用戶耐心等待

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.button:
//                ProgressDialog的學(xué)習(xí)
                ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
                progressDialog.setTitle("This is ProgressDialog");
                progressDialog.setMessage("This is Message");
                progressDialog.setCancelable(true);
                progressDialog.show();
                break;
            default:
                break;
        }
    }

image

內(nèi)容參考自《第一行代碼》

github代碼

碼云代碼

個(gè)人網(wǎng)站:www.panbingwen.cn

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末目养,一起剝皮案震驚了整個(gè)濱河市毒嫡,隨后出現(xiàn)的幾起案子兜畸,更是在濱河造成了極大的恐慌,老刑警劉巖咬摇,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件菲嘴,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡昭雌,警方通過查閱死者的電腦和手機(jī)烛卧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門总放,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人甥啄,你說我怎么就攤上這事炬搭。” “怎么了融虽?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵有额,是天一觀的道長(zhǎng)彼绷。 經(jīng)常有香客問我,道長(zhǎng)句狼,這世上最難降的妖魔是什么热某? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任昔馋,我火速辦了婚禮秘遏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘洋侨。我一直安慰自己,他們只是感情好边苹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布个束。 她就那樣靜靜地躺著聊疲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪阱表。 梳的紋絲不亂的頭發(fā)上昌妹,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天飞崖,我揣著相機(jī)與錄音固歪,去河邊找鬼胯努。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蒲讯,可吹牛的內(nèi)容都是我干的灰署。 我是一名探鬼主播溉箕,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼肴茄,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了抗楔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤贫橙,失蹤者是張志新(化名)和其女友劉穎卢肃,沒想到半個(gè)月后才顿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年忙芒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了讳侨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片跨跨。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖忱嘹,靈堂內(nèi)的尸體忽然破棺而出耕渴,到底是詐尸還是另有隱情橱脸,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布椭盏,位于F島的核電站掏颊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏盆偿。R本人自食惡果不足惜准浴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望乐横。 院中可真熱鬧求橄,春花似錦、人聲如沸葡公。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽催什。三九已至涵亏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蒲凶,已是汗流浹背气筋。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宠默,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓臂聋,卻偏偏與公主長(zhǎng)得像光稼,于是被迫代替她去往敵國(guó)和親或南。 傳聞我的和親對(duì)象是個(gè)殘疾皇子孩等,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • (一)走上古驛道 母親楊絳,父親錢鐘書采够,女兒錢瑗肄方。 楊絳和錢鐘書已是老年時(shí)期,錢瑗在學(xué)校里當(dāng)教師蹬癌,經(jīng)常會(huì)抽空去看二...
    Hui呀閱讀 299評(píng)論 0 0
  • 一刻也沒消停過权她。終于下班。盧醫(yī)生跟我開玩笑逝薪,你快解放啦哈隅要。我苦笑。我們常常被‘’沒有一份工作不辛苦‘’去...
    琴二的哆啦閱讀 319評(píng)論 0 0
  • 7月21號(hào)董济,天氣:晴 今天華妹正式離職步清,跟了我4年多,估計(jì)是不習(xí)慣多于不舍。 職場(chǎng)10年多廓啊,早已練就一身好本領(lǐng)欢搜,對(duì)...
    南雨Y頭閱讀 137評(píng)論 0 1