天天看點

【10】Android UI控件 - Button & ImageButton前言相關方法&屬性StateListDrawable點選事件

前言

Butten 繼承自 TextView,因而很多 TextView的屬性也可以用在 Button 上。

ImageButton 繼承自 Button,用法與 Button 大緻相同,值得注意的是 Button可以顯示文字,而 ImageButton 無法通過 android:text 顯示文字,主要拿來顯示圖檔。

相關方法&屬性

除了構造函數外,Button類沒有自己定義的方法,主要通過繼承父類的方法實作對按鈕元件的操作。

【10】Android UI控件 - Button & ImageButton前言相關方法&屬性StateListDrawable點選事件

Button 常用屬性與 TextView 相同。

【10】Android UI控件 - Button & ImageButton前言相關方法&屬性StateListDrawable點選事件

預設情況下,Button 使用安卓系統提供的預設背景,是以可能在不同裝置上風格不同,為此 Android 支援修改顯示風格。

ImageButton則可通過android:src顯示圖檔。

StateListDrawable

前面 TextView 中講到了 drawable 檔案中的<spape>标簽,本次我們将講解 <selector> 标簽,并通過它實作點選效果。

<selector> 标簽相關屬性

rawable:引用的Drawable位圖,我們可以把他放到最前面,就表示元件的正常狀态~

state_focused:是否獲得焦點

state_window_focused:是否獲得視窗焦點

state_enabled:控件是否設定了響應事件

state_checkable:控件可否被勾選; 例如:checkbox

state_checked:控件是否被勾選

state_selected:控件是否被選擇,針對有滾輪的情況

state_pressed:控件是否被按下/點選

state_active:控件是否處于活動狀态,eg:slidingTab

state_single:控件包含多個子控件時,确定是否隻顯示一個子控件

state_first:控件包含多個子控件時,确定第一個子控件是否處于顯示狀态

state_middle:控件包含多個子控件時,确定中間一個子控件是否處于顯示狀态

state_last:控件包含多個子控件時,确定最後一個子控件是否處于顯示狀态

示例(按鍵點選效果)

button_click.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:state_pressed="true"
        android:drawable="@drawable/timg1"/>
    <item
        android:drawable="@drawable/timg2"/>

</selector>
           

MainActivity.java

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center|top">

    <Button
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginTop="20dp"
        android:text="button"
        android:background="@drawable/button_click"/>

    <ImageButton
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginTop="20dp"
        android:src="@drawable/left"/>

</LinearLayout>
           

效果示範圖

【10】Android UI控件 - Button &amp; ImageButton前言相關方法&amp;屬性StateListDrawable點選事件

點選事件

前面做登入界面的時候,使用到了登入按鈕跳轉到歡迎界面。

實作點選事件有兩種方法;第一種是 android:onClick , 第二種是 OnClick ( )。

android:onClick

以 Button 為例,當按鍵按下事,會觸發 showToast 方法。

<Button
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_marginTop="20dp"
        android:text="button"
        android:background="@drawable/button_click"
        android:onClick="showToast"/>
           

回到 Activity,編寫showToast()函數。

public void showToast(View view){
        Toast.makeText(this,"方法1:我被點到啦",Toast.LENGTH_SHORT).show();
    }
           

onClick( )

【10】Android UI控件 - Button &amp; ImageButton前言相關方法&amp;屬性StateListDrawable點選事件

效果示範

【10】Android UI控件 - Button &amp; ImageButton前言相關方法&amp;屬性StateListDrawable點選事件