標籤:
按鈕由文本或表徵圖(或文本和一個表徵圖)組成,當使用者觸摸到它時,會發生一些動作。今天我們開始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的使用