你的位置:首页 > 操作系统

[操作系统]android基础组件


  按钮由文本或图标(或文本和一个图标)组成,当用户触摸到它时,会发生一些动作。今天我们开始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) 在中定义的Button中增加属性android:onClick

<??><Button ="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
<??><selector ="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
<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.

<??><selector ="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.

<??><LinearLayout ="http://schemas.android.com/apk/res/android"  ="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>

 运行效果如下:

辽宁旅游线路报价辽宁旅游攻略大全辽宁旅游路线推荐辽宁自驾游攻略辽宁旅游线路大全上海碧海金沙水上乐园门票价格是多少? 珠海石景山公园票价?石景山公园优惠价? 普陀山最佳旅游时间是什么时候? 来一场蔚县的穿越时空之旅 广州大学城在哪?怎么去? 广州大学城里都有哪些大学? 广州有几个火车站?去深圳在哪个站坐车最方便? 广州有哪几个区?广州中心城市在哪? 腾格里天鹅湖景区几点开门?腾格里沙漠天鹅湖景区开放时间? 腾格里天鹅湖景区交通工具租用多少钱?腾格里沙漠天鹅湖景区交通工具价格? 深圳真人cs有哪些地方?深圳cs基地在哪里? 深圳真人cs一场多少钱?深圳哪里可以打真人cs? 老人到南方旅游要注意什么? 去北京要带什么?要注意什么? 高速公路什么时间免费? 三亚公交详细路线 554-3221-411 Datasheet 554-3221-411 Datasheet 554-3221-511 Datasheet 554-3221-511 Datasheet 554-3222 Datasheet 554-3222 Datasheet 广西去香港旅游 广西去香港旅游 广西去香港旅游 镇江去香港游 镇江去香港游 镇江去香港游 常州去香港旅游 常州去香港旅游 常州去香港旅游