android开发中switch在切换开/关状态时,先弹出一个dialog(确认/取消)以让用户确认是不是切换开/关状态

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android开发中switch在切换开/关状态时,先弹出一个dialog(确认/取消)以让用户确认是不是切换开/关状态相关的知识,希望对你有一定的参考价值。

要实现这种逻辑,方式实在太多了,最简单的就是switch注册点击事件
(不叫你注册onCheckedChanged事件是因为你设置setChecked的时候,又会触发onCheckedChanged)
然后在方法里先弹出一个alertDialog
确定后设置switch.setChecked(true/false)
参考技术A 在switch的触发事件中添加的对话框就好了追问

在onCheckedChanged中添加对话框的话,一旦取消操作,将会再一次触发onCheckedChanged

追答

你怎么知道再一次触发了?

追问

试过了呀

追答

就是说这个提示框一直弹出对吗???

如何在android中更改切换按钮颜色

我有这个Switchbutton

<Switch
    android:id="@+id/switch"
    android:layout_width="300dp"
    android:layout_height="wrap_content"
    android:text="some text"
    android:textColor="@color/foreground" />

当从默认选项到我的颜色时,如何更改按钮的颜色?

更新:

我试过这个解决方案:Change "on" color of a Switch

但是当我从Switch更改为SwitchCompat时,我看不到任何Switch Buttons

仅供参考我使用<style name="AppTheme" parent="Theme.Leanback">

答案

我通过编程方式更改开关按钮的颜色来解决问题

int myColor = getResources().getColor(R.color.myColor);
int defaultColor = getResources().getColor(R.color.defaultColor);

public void changeSwitch(View view) {
    boolean checked = ((Switch) view).isChecked();
    if (checked) {
        ((Switch) view).getThumbDrawable().setColorFilter(myColor,
                PorterDuff.Mode.MULTIPLY);
        ((Switch) view).getTrackDrawable().setColorFilter(myColor,
                PorterDuff.Mode.MULTIPLY);
    } else {
        ((Switch) view).getThumbDrawable().setColorFilter(defaultColor,
                PorterDuff.Mode.MULTIPLY);
        ((Switch) view).getTrackDrawable().setColorFilter(defaultColor,
                PorterDuff.Mode.MULTIPLY);
    }
}

以上是关于android开发中switch在切换开/关状态时,先弹出一个dialog(确认/取消)以让用户确认是不是切换开/关状态的主要内容,如果未能解决你的问题,请参考以下文章

Android:使用文本和自定义视图切换

如何在android中显示密码开/关模式的切换按钮

3.7HarmonyOS鸿蒙开发组件Switch

Android零基础入门第21节:ToggleButton和Switch使用大全

android怎么来判断蓝牙开、关的状态?求代码

Android Text 应该出现在 Switch 的两侧