如何在android上动态更改按钮和文本颜色

时间:2011-11-03 07:32:16

标签: android button

如何动态/编程地更改按钮文本颜色和按钮形状(矩形)?

5 个答案:

答案 0 :(得分:12)

如果你的main.xml中有一个id = button1的按钮,那么你可以按如下方式使用它:

setContentView(R.layout.main);

Button mButton=(Button)findViewById(R.id.button1);
mButton.setTextColor(Color.parseColor("#FF0000")); // custom color
//mButton.setTextColor(Color.RED); // use default color
mButton.setBackgroundResource(R.drawable.button_shape);

R.drawable.button_shape(button_shape.xml):

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
  <gradient
      android:startColor="#70ffffff"
      android:centerColor="#70ffffff"
      android:endColor="#70ffffff"
      android:angle="270" />
  <corners 
        android:bottomRightRadius="8dp"
        android:bottomLeftRadius="8dp"
        android:topLeftRadius="8dp"
        android:topRightRadius="8dp"/>  
</shape>

您可以拥有自己的形状文件。根据需要进行更改。

答案 1 :(得分:4)

您可以像

一样动态更改按钮文字颜色

按钮btnChangeTextColor =(按钮)findViewbyId(btnChange); btnChangeTextColor.setTextColor(Color.BLUE);

答案 2 :(得分:1)

基本上你必须遵循这个计划:

1)引用您想要更改的对象

findViewById(R.id.<your_object_id>);

2)将其投射到对象类型

Button btnYourButton = (Button) findViewById(R.id.<your_object_id>);

3)在对象“btnYourButton”上使用setter

4)重绘你的视图(可能调用invalidate());

这取决于您何时希望更改发生。我假设你将有一个eventListener 附加到您的对象,在事件被触发后,您将执行更改。

答案 3 :(得分:0)

您需要某种类型的侦听器来侦听要发生的事件,以及何时使用某些set方法更改形状/文本颜色。

尝试:

http://developer.android.com/reference/android/view/View.OnClickListener.html

为了提供更有针对性的反馈,我需要知道您想要改变文本颜色和形状的信号。您能否动态更新详细信息?

答案 4 :(得分:0)

@覆盖     public boolean onTouchEvent(MotionEvent event){

    if (event.getAction() == MotionEvent.ACTION_DOWN) {

        start_x = event.getX();
        start_y = event.getY();

    } else if (event.getAction() == MotionEvent.ACTION_MOVE) {

        setTitle(event.getX() + "y pos" + event.getY());
        RelativeLayout layout = (RelativeLayout) findViewById(R.id.lay);

        layout.setBackgroundColor(Color.rgb((int) start_x, (int) start_y, 0));
    } else if (event.getAction() == MotionEvent.ACTION_UP) {



    }
    return true;
}