ToggleButton изменить цвет - PullRequest
       0

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

0 голосов
/ 12 сентября 2018

У меня есть два 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 голосов
/ 13 сентября 2018

Чтобы иметь две кнопки ToggleButton в действии, которые, когда ToggleButton1 нажимается, ТОЛЬКО эта кнопка меняет цвет, а другая нет, но затем, когда ToggleButton2 включается: ToggleButton1 выключается, а 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;
        }
    }
}

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


0 голосов
/ 12 сентября 2018

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

<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" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...