保存按钮的背景?

Posted

技术标签:

【中文标题】保存按钮的背景?【英文标题】:Saving the background of a button? 【发布时间】:2019-10-31 22:03:16 【问题描述】:

我有一个有背景的切换按钮。当用户关闭应用程序或导航离开 MainActivity 时,我想保存该背景状态。我设法保存了切换布尔值的状态,但没有保存切换本身的图像背景。有人有想法么?请参阅下面的代码以获取更多信息。

private ToggleButton mtoggle;

public static final String SHARED_PREFS = "sharedPrefs";
public static final String M_TOGGLE = "mtoggle";

private boolean SwitchON_OFF;

这是我保存、加载和更新的方法。再次保存切换布尔值的状态是没有问题的。只是不知道从哪里开始保存切换按钮的背景状态,(一旦按下,背景就会从灰色变为黄色,反之亦然)。需要保存每个状态。

public void saveData()

    SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS,MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();

    editor.putBoolean(M_TOGGLE,mtoggle.isChecked()); // saving toggle state no problem.


    editor.apply();

    Toast.makeText(this, "Saved", Toast.LENGTH_SHORT ).show();



public  void loadData()
    SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS,MODE_PRIVATE);

    SwitchON_OFF = sharedPreferences.getBoolean(M_TOGGLE,false);



public void updateViews()
    mtoggle.setChecked(SwitchON_OFF);

【问题讨论】:

【参考方案1】:

你可以这样做:-

根据您的要求,您可以使用 if 条件。

可绘制文件:- 两种颜色:-

第一:-

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">

<stroke
    android:
    android:color="@color/sky_blue"
    android:drawable="@android:color/transparent" />

<solid android:color="@color/message_fragment_button" />

<corners
    android:bottomLeftRadius="@dimen/dp_10"
    android:bottomRightRadius="@dimen/dp_10"
    android:topLeftRadius="@dimen/dp_10"
    android:topRightRadius="@dimen/dp_10" />

</shape>

第二次:-

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">

<stroke
    android:
    android:color="@color/sky_blue"
    android:drawable="@android:color/transparent" />

<solid android:color="@color/sky_blue" />

<corners
    android:bottomLeftRadius="@dimen/dp_10"
    android:bottomRightRadius="@dimen/dp_10"
    android:topLeftRadius="@dimen/dp_10"
    android:topRightRadius="@dimen/dp_10" />

</shape>

在 Java 中:-

if (MessageConfirmed.equals("Yes")) 
        btn_confirm.setText("Confirmed");
        btn_confirm.setBackground(ContextCompat.getDrawable(context, 
R.drawable.confirm_button_blue));
        btn_confirm.setEnabled(false);

     else 
        btn_confirm.setText("Confirm");
        btn_confirm.setBackground(ContextCompat.getDrawable(context, 
R.drawable.confirm_button_green));
        btn_confirm.setEnabled(true);


但是是的,您需要在 XML 文件中定义初始背景颜色。

【讨论】:

以上是关于保存按钮的背景?的主要内容,如果未能解决你的问题,请参考以下文章

Onclick背景颜色更改并保存在数据库中

KonjaJs 使用 toDataUrl 保存背景图像

swift 3中的按钮背景图像

在 ASP.Net MVC 中使用一个提交按钮保存一系列创建表单

保存的首选项在重新启动时不起作用

微信小程序保存7种底色之后在哪里设置