android基礎組件---->Buttons的使用

來源:互聯網
上載者:User

標籤:

  按鈕由文本或表徵圖(或文本和一個表徵圖)組成,當使用者觸摸到它時,會發生一些動作。今天我們開始Button的學習。

Button的簡要說明

根據你是否想要一個帶有文本的按鈕,一個表徵圖,或者兩者,你可以在三種方式中建立按鈕來進行布局:

  

  • With text, using the Button class:
<Button    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="@string/button_text"    ... />
  • With an icon, using the ImageButton class:
<ImageButton    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:src="@drawable/button_icon"    ... />
  • With text and an icon, using the Button class with the android:drawableLeft attribute:
<Button    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="@string/button_text"    android:drawableLeft="@drawable/button_icon"    ... />

 

按鈕的響應

1) 在xml中定義的Button中增加屬性android:onClick

  • 在xml中定義android:onClick屬性:
<?xml version="1.0" encoding="utf-8"?><Button xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="@string/button_send"    android:onClick="sendMessage" />
  • 在MainActivity中定義sendMessage方法:
public void sendMessage(View view) {    // Do something in response to button click}

2) 在代碼中使用OnClickListener

Button button = (Button) findViewById(R.id.button_send);button.setOnClickListener(new View.OnClickListener() {    public void onClick(View v) {        // Do something in response to button click    }});

 

按鈕樣式

1) Borderless button : To create a borderless button, apply the borderlessButtonStyle style to the button.

<Button    android:onClick="sendMessage"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="bordless button"    style="?android:attr/borderlessButtonStyle" />

2) Custom background: Instead of supplying a simple bitmap or color, however, your background should be a state list resource that changes appearance depending on the button‘s current state

  • Create three bitmaps for the button background that represent the default, pressed, and focused button states. 
  • Place the bitmaps into the res/drawable/ directory of your project. Be sure each bitmap is named properly to reflect the button state that they each represent.

  

  • Create a new XML file in the res/drawable/ directory (name it something like button_custom.xml). Insert the following XML
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:drawable="@drawable/button_pressed"        android:state_pressed="true" />    <item android:drawable="@drawable/button_focused"        android:state_focused="true" />    <item android:drawable="@drawable/button_default" /></selector>
  • Then simply apply the drawable XML file as the button background
<Button    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="send button"    android:background="@drawable/button_custom"  />

 

測試的項目

 項目結構:

MainActivity.java:

package com.huhx.linux.buttontest;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.Toast;public class MainActivity extends AppCompatActivity {    private Button button;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        button = (Button) findViewById(R.id.sendButton);        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Toast.makeText(MainActivity.this, "button click", Toast.LENGTH_SHORT).show();            }        });    }    // bordless button    public void sendMessage(View view) {        Toast.makeText(MainActivity.this, "Borderless Button", Toast.LENGTH_SHORT).show();    }}

 button_custom.xml

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:drawable="@drawable/button_pressed"        android:state_pressed="true" />    <item android:drawable="@drawable/button_focused"        android:state_focused="true" />    <item android:drawable="@drawable/button_default" /></selector>

 activity_main.xml.xml

<?xml version="1.0" encoding="utf-8"?><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.huhx.linux.buttontest.MainActivity">    <Button        android:id="@+id/sendButton"        android:text="text button"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />    <ImageButton        android:src="@mipmap/ic_launcher"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />    <Button        android:drawableRight="@mipmap/ic_launcher"        android:text="Linux"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />    <Button        android:onClick="sendMessage"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="bordless button"        style="?android:attr/borderlessButtonStyle" />    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="send button"        android:background="@drawable/button_custom"  /></LinearLayout>

 運行效果如下:

android基礎組件---->Buttons的使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.