android基本控制項學習-----Button

来源:http://www.cnblogs.com/huolan/archive/2016/01/03/5095971.html
-Advertisement-
Play Games

Button講解:一、在我們實際的使用button的時候經常會對button不同狀態會有不同的顯示,在講解Button前,首先對drawable下麵的statelistdrawable的相關知識講一下,StateListDrawable在一中drawable下麵的一種資源文件,它的關鍵節點selec...


Button講解:

一、在我們實際的使用button的時候經常會對button不同狀態會有不同的顯示,在講解Button前,首先對drawable下麵的statelistdrawable的相關知識講一下,StateListDrawable在一中drawable下麵的一種資源文件,它的關鍵節點selector,我只需要在設置button屬性background的時候@drawable/selector_name就可以了,這時就會根據不同狀態現在button的變化,當然這樣StateListDrawable也適合其他一些控制項,主要還是用於Button。

StateListDrawable我們可能用到的屬性:

  • drawable:引用的Drawable點陣圖,我們可以把他放到最前面,就表示組件的正常狀態~
  • state_focused:是否獲得焦點
  • state_window_focused:是否獲得視窗焦點
  • state_enabled:控制項是否可用
  • state_checkable:控制項可否被勾選,eg:checkbox
  • state_checked:控制項是否被勾選
  • state_selected:控制項是否被選擇,針對有滾輪的情況
  • state_pressed:控制項是否被按下
  • state_active:控制項是否處於活動狀態,eg:slidingTab
  • state_single:控制項包含多個子控制項時,確定是否只顯示一個子控制項
  • state_first:控制項包含多個子控制項時,確定第一個子控制項是否處於顯示狀態
  • state_middle:控制項包含多個子控制項時,確定中間一個子控制項是否處於顯示狀態
  • state_last:控制項包含多個子控制項時,確定最後一個子控制項是否處於顯示狀態

二:實例一:實現按鈕按下效果和按鈕的圓角

Java文件

package com.example.test3;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;


public class MainActivity extends Activity {
    private Button btn1;
    private Button btn2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn1 = (Button) findViewById(R.id.btn_one);
        btn2 = (Button) findViewById(R.id.btn_two);
        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (btn2.getText().toString().endsWith("按鈕不可用")){
                    btn1.setEnabled(false);
                    btn2.setText("按鈕可用");
                }else{
                    btn1.setEnabled(true);
                    btn2.setText("按鈕不可用");
                }
            }
        });
    }
}

StateListDrawable文件:其中關於shape的使用前面已經講過

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!--按下按鈕-->
    <item android:state_pressed="true">
        <shape>
            <stroke android:width="5px" android:color="@android:color/holo_red_light"/>
            <corners android:radius="15dp"/>
            <solid android:color="@android:color/holo_red_light"/>
        </shape>
    </item>
    <!-- 按鈕不可用-->
    <item android:state_enabled="false">
        <shape>
            <stroke android:width="5px" android:color="@android:color/darker_gray"/>
            <corners android:radius="15dp"/>
            <solid android:color="@android:color/darker_gray"/>
        </shape>
    </item>
    <!--其他狀況-->
    <item>
        <shape>
            <stroke android:width="5px" android:color="@android:color/holo_blue_bright"/>
            <corners android:radius="15dp"/>
            <solid android:color="@android:color/holo_blue_bright"/>
        </shape>
    </item>
</selector>

佈局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#ffffff">
    <Button
        android:id="@+id/btn_one"
        android:layout_width="match_parent"
        android:layout_height="70dp"
        android:background="@drawable/btn_bg1"
        android:text="按鈕"
        android:textStyle="bold"
        android:textSize="24sp"/>
    <Button
        android:id="@+id/btn_two"
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:layout_marginTop="10dp"
        android:text="按鈕不可用"
        android:textSize="24sp"
        android:textStyle="bold"
        />

</LinearLayout>

效果圖:

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近項目要使用Redis,特將這段時間將Redis的學習經驗與大家分享,算是對這段時間學習成果的總結和技術提煉,不足之處還望大家批評指正。項目背景:有些很少改動的數據和經常使用的數據(例如系統中下拉列表數據),系統需要頻繁的與SqlServer資料庫進行數據交互,大大的增加了伺服器和SqlServe...
  • 正則表達式正則表達式是對字元串操作的一種邏輯公式, 用事先定義好的一些特定字元、及這些特定字元的組合, 組成一個"規則字元串",這個"規則字元串"用來表達對字元串的一種過濾邏輯,正則表達式就是用於描述這些規則的工具,或者說, 正則表達式就是記錄文本規則的代碼.在開發中, 我們經常會有查找符合某些複雜...
  • 新手的煩惱你不懂 - - ## 這個問題著實變態,就是普通的 UITableViewController ,數據是靜態的,運行時動態添加了一個 UIView(xib)作為 tableFooterView ,關鍵是豎屏的時候事件完全不受影響,橫豎屏一切換就收不到事件鳥。
  • 複製無處不在,用 Storyboard 做差不多的界面難免會複製,今天莫名其妙的崩潰鳥!
  • //UIImageView 用來顯示圖片的控制項 UIImageView *imgView = [[UIImageView alloc]initWithFrame:CGRectMake(10,_label.frame.size.height+10+10, self.window.frame.size....
  • 效果如圖目前旋轉和銳化的界面還沒做。編輯模塊包含圖片裁剪、旋轉、銳化。一、點擊美化圖片首頁【編輯】,進入具體操作界面 FWFunctionViewController *vc = [[FWFunctionViewController alloc] initWithImage:self.imag...
  • [轉載請註明出處]sdk是別人的,我只是下載來集成一下.smssdk下載網站:http://www.mob.com/(也有其他很多網站有類似SDK,譬如https://www.juhe.cn/等等,可以自行百度,我在這裡就演示一下MOB官網的)此網站號稱smssdk免費,可是進去一看...........
  • //// ViewController.m// 計算器//屏幕的寬和高#define SCREEN_W self.view.frame.size.width#define SCREEN_H self.view.frame.size.height#import "ViewController.h"@i...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...