示例:一个TextView 几个button按钮,当点击不同的button按钮的时候textview中显示出不同的背景颜色跟内容,已经通过按键也更改textview中的背景颜色跟内容。
代码实现如下:
1):在strings.xml中定义一些表示颜色的属性。代码如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, ButtonSimpleActivity!</string>
<string name="app_name">Button组件的运用</string>
<string name="myButtonText1">Red button</string>
<string name="myButtonText2">Blue button</string>
<string name="myButtonText3">Yellow button</string>
<drawable name="BLUE">#FF0000FF</drawable>
<drawable name="BLACK">#FF000000</drawable>
<drawable name="RED">#FFFF0000</drawable>
<drawable name="YELLOW">#FFFFFF00</drawable>
<drawable name="WHITE">#FFFFFFFF</drawable>
</resources>
2);在main.xml中生成相应的UT,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<!-- 定义myTextView控件,设置背景颜色为白色 -->
<TextView
android:id="@+id/myTextView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
android:layout_gravity="top"
android:background="@drawable/WHITE"/>
<!-- 定义myButton1控件,设置布局位置为居中 -->
<Button
android:id="@+id/myButton1"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/myButtonText1"
android:layout_gravity="center"
android:layout_weight="1"
/>
<!-- 定义myButton2控件,设置布局位置为居中 -->
<Button
android:id="@+id/myButton2"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/myButtonText2"
android:layout_gravity="center"
android:layout_weight="2"
/>
<!-- 定义myButton3控件,设置布局位置为居中 -->
<Button
android:id="@+id/myButton3"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/myButtonText3"
android:layout_gravity="center"
android:layout_weight="3"
/>
</LinearLayout>
代码解释:layout_gravity属性用于指定控件的位置,它提供了top、bottom、left、right、center_vertical、fill_vertical等属性;
top:控件位于布局的顶端;
center:控件位于布局的中间;
bottom:控件位于布局的底端;
left:控件位于布局的左端;
right:控件位于布局的右端;
layout_weight属性用于设置控件在整个布局的比重,特别注意layout_weight的值需要加引号,否则会编译出错。
3)Activity类,代码如下:
package com.button.simple;
import android.app.Activity;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class ButtonSimpleActivity extends Activity {
TextView textview;//声明为全局变量
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
/*将Button对象声明为常量,因为该对象被另外一个程序(setOnClickListener)引用,不声明
* 为常量的话编译失败。
* */
final Button button1=(Button)findViewById(R.id.myButton1);
final Button button2=(Button)findViewById(R.id.myButton2);
final Button button3=(Button)findViewById(R.id.myButton3);
textview=(TextView)findViewById(R.id.myTextView);
/*因为Drawable对象被另外一个方法(setOnClickListener)引用,需要将该对象声明为常量,
* 否则编译失败。
* */
Resources resource = this.getBaseContext().getResources();
final Drawable red_Drawable=resource.getDrawable(R.drawable.RED);
final Drawable blue_Drawable=resource.getDrawable(R.drawable.BLUE);
final Drawable yellow_Drawable=resource.getDrawable(R.drawable.YELLOW);
//实现button1的单击监听方法
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String str = "你点击了"+button1.getText().toString();
//当点击button1时,修改textview中的文本
textview.setText(str);
//若当前的textview背景颜色不是红色,则修改背景颜色为红色
if(textview.getBackground()!=red_Drawable){
textview.setBackgroundDrawable(red_Drawable);
}
}
});
//实现button2的单击监听方法
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String str = "你点击了"+button2.getText().toString();
//当点击button2时,修改textview中的文本
textview.setText(str);
//若当前的textview背景颜色不是蓝色,则修改背景颜色为红色
if(textview.getBackground()!=blue_Drawable){
textview.setBackgroundDrawable(blue_Drawable);
}
}
});
//实现button3的单击监听方法
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String str = "你点击了"+button3.getText().toString();
//当点击button1时,修改textview中的文本
textview.setText(str);
//若当前的textview背景颜色不是黄色,则修改背景颜色为红色
if(textview.getBackground()!=yellow_Drawable){
textview.setBackgroundDrawable(yellow_Drawable);
}
}
});
}
//实现onKeyDown接口方法,当用户按键时,该方法被调用
public boolean onKeyDown(int keyCode,KeyEvent event){
CharSequence charseq="You have pressed";
charseq = charseq+"a key!";
textview.setText(charseq);
return super.onKeyDown(keyCode, event);
}
//实现onKeyUp接口方法,当释放
public boolean onKeyUp(int keyCode,KeyEvent event){
CharSequence charseq="Change your color here!";
textview.setText(charseq);
textview.setBackgroundColor(Color.WHITE);
return super.onKeyDown(keyCode, event);
}
}
效果如下;