我的活动中有两个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)
为“切换”按钮使用样式
<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语句中发生的事情