ToggleButton изменить цвет

У меня в работе два 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" />

Пожалуйста, помогите мне, я был бы признателен.

0
0
715
2

Ответы 2

используйте стиль для кнопки переключения

<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" />

Чтобы иметь два ToggleButton в действии, которое при нажатии ToggleButton1 ТОЛЬКО эта кнопка меняет цвет, а другая - нет, но затем, когда ToggleButton2 включен: ToggleButton1 выключается, а ToggleButton2 включается, Я создал две глобальные переменные: одну логическую для первого переключателя и логическую для второго переключателя.

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;
        }
    }
}

Затем я использовал свойство onClick в xml для ссылки на методы ToggleOne и ToggleTwo, которые я создал в своем классе java (эти методы должны быть общедоступными, недействительными и иметь 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>

Если вы хотите переключить другую кнопку-переключатель при нажатии одной из них, вам просто нужно настроить, что происходит внутри операторов if / else внутри методов toggleButton.


Другие вопросы по теме