通过按钮单击更改圆形按钮背景和文本

时间:2014-12-29 15:00:23

标签: android button colors background background-color

我是Android开发和Android的新手。我一直坚持这个问题。

我想做的是

  1. 我试图创建一个绿色背景的圆形按钮&红色文字就可以了。

  2. 然后我尝试将圆形按钮背景更改为红色,并将文本更改为绿色。

  3. 最后,这些都应该通过按钮点击重复。也就是说,当我第一次点击按钮时,带有红色文字的绿色按钮'应该转到带有绿色文字的红色按钮'然后当我第二次点击按钮时,带有绿色文字的红色按钮'应该回到带有红色文字的绿色按钮'等等。

  4. 我成功创建了一个圆形按钮&改变了按钮背景,文字就可以了。但是,有一个复杂的问题。

    单击按钮时,圆形按钮背景变为方形,整个方形用红色填充。我不想要那个。

    我希望以圆形方式填充颜色。

    以下是可绘制文件夹

    中的XML文件
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid android:color="#00FF00" />
    

    以下是布局中的XML

    <Button
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:text="Activate"
        android:textAllCaps="false"
        android:textSize="40sp"
        android:textColor="#FF0000"
        android:id="@+id/buttonActivate"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:background="@drawable/round_button"
        android:onClick="onButtonClick"
        style="?android:attr/borderlessButtonStyle" />
    

    以下内容来自MainActivity

    public void onButtonClick(View v) {
    
        // Change the background color & text color of the button when clicked
        Button buttonActivate = (Button) findViewById(R.id.buttonActivate);
        buttonActivate.setBackgroundColor(Color.parseColor("#FF0000"));
        buttonActivate.setText("De-Activate");
        buttonActivate.setTextColor(Color.parseColor("#00FF00"));
    }
    

    请详细解释如何做到这一点,因为我是新的。

2 个答案:

答案 0 :(得分:1)

试试这个可绘画:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_selected="true">
        <shape android:shape="oval">
            <solid android:color="#00ff00" />
        </shape>
    </item>

    <item>
        <shape android:shape="oval">
            <solid android:color="#ff0000" />
        </shape>
    </item>

</selector>

你的onclick ......

public void onButtonClick(View v) {
    if (buttonActivate.isSelected()) {
        buttonActivate.setTextColor(Color.parseColor("#00ff00"));
        buttonActivate.setSelected(false);
    } else {
        buttonActivate.setTextColor(Color.parseColor("#ff0000"));
        buttonActivate.setSelected(true);
    }
}

答案 1 :(得分:0)

维护布尔变量,即默认情况下将布尔变量设置为false,并且每当执行click时设置为true并基于布尔变量设置颜色。