ToggleButton更改颜色

时间:2018-09-12 20:40:09

标签: android android-layout android-studio

我的活动中有两个ToggleButton。我想单击第一个按钮,并将其颜色更改为白色。如果单击第二个按钮,则第一个按钮的颜色应更改为黑色,第二个按钮的颜色应更改为白色。

我想知道选择了哪个按钮。我该如何使用ToggleButton或其他方式执行此操作?

<ToggleButton android:id="@+id/tg_btn1"
    android:layout_width="match_parent"
    android:layout_height="46px"
    android:background="#ffffff" />

<ToggleButton android:id="@+id/tg_btn1"
    android:layout_width="match_parent"
    android:layout_height="46px"
    android:background="#ffffff" />

请帮助我,我将不胜感激。

2 个答案:

答案 0 :(得分:0)

为“切换”按钮使用样式

<style name="ToggleButton.YourTheme" parent="Theme.AppCompat.Light">
    <item name="colorControlNormal">@color/your_color</item>
    <item name="colorControlActivated">@color/your_color</item>
</style>

将其应用于您的按钮,它应该可以工作。最近没有测试过。

<ToggleButton android:id="@+id/tg_btn1"
    android:layout_width="match_parent"
    android:layout_height="46px"
    android:theme="@style/ToggleButton.YourTheme"
    android:background="#ffffff" />

答案 1 :(得分:0)

为了在一个活动中具有两个ToggleButton,在单击ToggleButton1时,仅该按钮会更改颜色,而另一个不会更改,但是在ToggleButton2开启时:ToggleButton1变为“ off”,ToggleButton2变为“ on”,我创建了两个全局变量:第一个切换为一个布尔值,第二个切换为一个布尔值。

package com.example.micha_000.togglecolors;

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ToggleButton;

public class MainActivity extends AppCompatActivity {
    Boolean toggleOneOn = false;
    Boolean toggleTwoOn = false;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void ToggleOne(View view){
        //If the Toggle Button is off
        if(!toggleOneOn){
            //This view element references the ToggleButton1
            view.setBackgroundColor(Color.WHITE);

            toggleOneOn = true;
        }
        //If it is is clicked while on
        else{
            view.setBackgroundColor(Color.BLACK);

            toggleOneOn = false;
        }

    }

    public void ToggleTwo(View view){
        //If the Toggle Button is clicked while off
        if(!toggleTwoOn){
            //This view element references the ToggleButton2
            view.setBackgroundColor(Color.WHITE);

            //This ToggleButton element references the ToggleButton1
            ToggleButton toggle1 = findViewById(R.id.ToggleButton1);
            toggle1.setBackgroundColor(Color.BLACK);

            toggleOneOn = false;
            toggleTwoOn = true;
        }
        //If it is is clicked while on
        else{
            view.setBackgroundColor(Color.BLACK);

            toggleTwoOn = false;
        }
    }
}

然后,我使用xml中的“ onClick”属性来引用我在java类中创建的ToggleOne和ToggleTwo方法(这些方法必须是公共的,无效的,并且像在代码中一样具有View作为参数)。然后,我将有条件地检查这些全局布尔值,然后使用“ setBackgroundColor”适当地更改切换的颜色。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:background="@color/colorPrimary"
    tools:context=".MainActivity">

    <ToggleButton
        android:id="@+id/ToggleButton1"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_centerInParent="true"
        android:onClick="ToggleOne"
        android:background="#000000"
        android:layout_marginBottom="5dp"/>

    <ToggleButton
        android:id="@+id/ToggleButton2"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_centerInParent="true"
        android:onClick="ToggleTwo"
        android:background="#000000"
        android:layout_below="@+id/ToggleButton1"/>


</RelativeLayout>

如果要在按下另一个切换按钮时进行切换,则只需调整toggleButton方法中if / else语句中发生的事情