來個Button看一看

来源:http://www.cnblogs.com/PyLearn/archive/2017/11/19/7862349.html
-Advertisement-
Play Games

每次寫代碼總會忘記一些東西,又要重新Goooooooooogle,好煩吶~ ...


0.目錄

1.前言

2.基本屬性與方法

3.點點更健康

4.我的Button有點多

5.震驚!TextView竟然...

1.前言

每次寫代碼總會忘記一些東西,又要重新Goooooooooogle,好煩吶~
本文參考網站(排名不分先後):
1.Android Button的基本使用
2.Android中設置文本顏色的三種方法
3.android:layout_gravity和android:gravity的區別

2.基本屬性與方法

Button 支持的 XML 屬性及相關方法:

XML屬性 相關方法 說明
android:id findViewById 在XML中設置id,然後在.java中才可以調用這個按鈕做其他事
android:text setText() 設置文字
android:textColor setTextColor() 設置文字顏色
android:textSize setTextSize() 設置文字大小
android:background setBackground() 設置背景顏色或者背景圖片
android:enabled setEnabled() 設置按鈕是否可以被點擊
android:layout_gravity 設置按鈕的位置
android:gravity 設置文字的位置

以下用實例來講解:
XML文件為:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.pylearn_01_1.MainActivity" >

    <Button
        android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="自古一樓沒卵用" />

    <Button
        android:id="@+id/btn2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="使用XML佈局"
        android:textColor="@android:color/white"
        android:textSize="50sp" />

    <Button
        android:id="@+id/btn3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/btn4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@android:color/background_dark" />

    <Button
        android:id="@+id/btn5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="可遠觀而不可褻玩"
        android:enabled="false" />

    <Button
        android:id="@+id/btn6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="使用layout_gravity讓按鈕居中"
        android:layout_gravity="center" />

    <Button
        android:id="@+id/btn7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="使用gravity讓文字居中"
        android:gravity="center" />

</LinearLayout>

java文件為:

package com.example.pylearn_01_1;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;

public class MainActivity extends Activity {

    /* pylearn_01_1
     * Button基本屬性與方法
     */
    Button btn3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn3=(Button)findViewById(R.id.btn3);

        btn3.setText("使用java佈局");//設置文字內容
        btn3.setTextColor(android.graphics.Color.RED);//設置文字顏色
        btn3.setTextSize(45);//設置文字大小
        btn3.setEnabled(false);//設置按鈕不能被點擊
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

eclipse中看xml為:

模擬器中運行結果為:

源代碼在此:pylearn_01_1

3.點點更健康

Button弄出來當然不是為了當花瓶的,咱們需要通過點擊它來完成一些事情。
按鈕的點擊事件可以使用

btn.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        //do something
    }
});

來實現。

源代碼在此:pylearn_01_2

也可以使用

btn1.setOnClickListener(this);
btn2.setOnClickListener(this);

然後讓MainActivity extends Activity implements OnClickListener實現onClick方法:

@Override
public void onClick(View v) {
    // TODO 自動生成的方法存根
    switch ( v.getId() ) {
        case R.id.btn1:
            fun_btn1();
            break;
        case R.id.btn2:
            fun_btn2();
            break;
    }
}

源代碼在此:pylearn_01_3

這兩種方法都可以實現按鈕點擊事件的處理。

4.我的Button有點多

如何實現多個Button平分天下:
使用android:layout_weight控制各個按鈕的權重,然後在parent佈局中控制好權重和android:weightSum。最後設置各個按鈕的占比為android:layout_width="0dp"。這樣就實現了按鈕的多個按鈕的平均分配。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.pylearn_01_1.MainActivity" >

    <Button
        android:id="@+id/btn"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:weightSum="4" >

        <Button
            android:id="@+id/btn1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="1" />

        <Button
            android:id="@+id/btn2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="2" />

        <Button
            android:id="@+id/btn3"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="3" />

        <Button
            android:id="@+id/btn4"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="4" />
    </LinearLayout>
</LinearLayout>

效果如下:

源代碼在此:pylearn_01_4

5.震驚!TextView竟然...

忘記在哪看到的一句話:

能用TextView的地方就別用Button
Button能實現的基本上TextView也能實現

有興趣可以試試:把上面所有程式中的Button換成TextView,毫無違和感。


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

-Advertisement-
Play Games
更多相關文章
  • 目的:在提交表單之前用JavaScript檢查下是不是圖片文件以及大小 註:match() 方法可在字元串內檢索指定的值,或找到一個或多個正則表達式的匹配。該方法類似 indexOf() 和 lastIndexOf(),但是它返回指定的值(存放匹配結果的數組),而不是字元串的位置。 ...
  • 1)Array.slice方法 1.1)接收兩個參數: a:起始下標 b:結束下標 1.2)返回由a(包括)至b(不包括)的元素所組成的數組,若一個參數都不傳,則返回由全部元素組成的數組。 1.3)該方法執行不影響原數組元素。 1.4)範例圖: 2)Array.splice方法 2.1)接收若幹參數 ...
  • 本篇是關於手寫代碼的題目。 1.實現一個trim函數 關於性能的寫法也不多說了,只是用最直觀的寫法來寫一下,使用正則有大概五六種寫法,感興趣可以自己去研究下,推薦《高性能JavaScript》 1.正則實現 trim leftTrim rightTrim 2.非正則實現 trim leftTrim ...
  • 1.此題涉及的知識點眾多,包括變數定義提升、this指針指向、運算符優先順序、原型、繼承、全局變數污染、對象屬性及原型屬性優先順序等等。 function Foo() { getName = function () { console.log(1) }; return this; } Foo.getNa ...
  • 正則表達式.zip http://pan.baidu.com/s/1dDmE0uP用AngularJS開發下一代Web應用.zip http://pan.baidu.com/s/1eQfkMMA掌握Ajax全書CHM版.zip http://pan.baidu.com/s/1sjOPBNv微軟Jav ...
  • 已經安裝過nodejs 1,安裝less; dos界面下進入node.js安裝目錄,通過命令npm install less –g 全局進行安裝less.(安裝過程可能需要等待一段時間) 2、先在控制台編譯一遍:lessc 文件路徑\文件名.less(可省略); 3、在dos界面輸入:文件路徑\文件 ...
  • 電腦中已經安裝nodejs。 cmd進入dos界面,輸入文件路徑;然後輸入>node 文件名.js ...
  • 隨機產生20個單詞 一、問題來源: 老師給了一份專業單詞word,說第二天要全背下來。錯了就五十遍啊五十遍。 然後,有人提出要做一個產生隨機單詞的Demo,來測試自己。 老師表示呵呵,做出來的就可以不用聽寫。 頓時,我就表示,是可忍,孰不可忍啊。這是在侮辱我們啊。這票我幹了,不能讓人看低了。我這麼做 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...