У меня в работе два 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" />
Пожалуйста, помогите мне, я был бы признателен.
используйте стиль для кнопки переключения
<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.