Java 按下时更改浮动动作按钮的颜色

Java 按下时更改浮动动作按钮的颜色,java,android,floating-action-button,Java,Android,Floating Action Button,我想使用浮动操作按钮作为某种常用按钮,即书签功能。我使用的是一个布尔值,初始化如下: boolean favSelected = false; 我的活动将从SQLite数据库中检索一些信息,以确定favSelected是否为真。如果这是真的,我会希望我的晶圆厂是在一个不同的颜色,如果假的原始颜色。我试过这个: fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.

我想使用浮动操作按钮作为某种常用按钮,即书签功能。我使用的是一个
布尔值
,初始化如下:

boolean favSelected = false;
我的活动将从SQLite数据库中检索一些信息,以确定
favSelected
是否为真。如果这是真的,我会希望我的晶圆厂是在一个不同的颜色,如果假的原始颜色。我试过这个:

    fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if(favSelected = false) {
                favSelected = true;
                fab.setBackgroundTintList(new ColorStateList(new int[][]{new int[]{0}}, new int[]{getResources().getColor(R.color.header_pressed)}));
            } else if ( favSelected = true){
                favSelected = false;
                fab.setBackgroundTintList(new ColorStateList(new int[][]{new int[]{0}}, new int[]{getResources().getColor(R.color.colorPrimary)}));
            }

        }
    });

但它不起作用。预期的功能有点像复选框

尝试以下代码在按下状态下更改晶圆厂颜色:

    int[][] states = new int[][]{
            new int[]{android.R.attr.state_pressed},
            new int[]{-android.R.attr.state_pressed},
            new int[]{android.R.attr.state_focused},
            new int[]{-android.R.attr.state_pressed}
    };

    int[] colors = new int[]{
            ContextCompat.getColor(this, R.color.color_pressed),
            ContextCompat.getColor(this, R.color.color_normal),
            ContextCompat.getColor(this, R.color.color_pressed),
            ContextCompat.getColor(this, R.color.color_normal)
    };
    fab.setBackgroundTintList(new ColorStateList(states, colors));

请尝试以下代码更改按下状态下的晶圆厂颜色:

    int[][] states = new int[][]{
            new int[]{android.R.attr.state_pressed},
            new int[]{-android.R.attr.state_pressed},
            new int[]{android.R.attr.state_focused},
            new int[]{-android.R.attr.state_pressed}
    };

    int[] colors = new int[]{
            ContextCompat.getColor(this, R.color.color_pressed),
            ContextCompat.getColor(this, R.color.color_normal),
            ContextCompat.getColor(this, R.color.color_pressed),
            ContextCompat.getColor(this, R.color.color_normal)
    };
    fab.setBackgroundTintList(new ColorStateList(states, colors));
您使用的是
if(favSelected=false)
这是对favSelected的赋值,请像
(favSelected=false)
一样使用

对于比较,我们使用
=
符号而不是
=

所以像这样修改代码

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @TargetApi(Build.VERSION_CODES.LOLLIPOP)
            @Override
            public void onClick(View view) {

                if (!favSelected) {
                    favSelected = true;
                    view.setBackgroundTintList(new ColorStateList(new int[][]
                            {new int[]{0}}, new int[]{getResources().getColor(R.color.colorAccent)}));
                } else if (favSelected) {
                    favSelected = false;
                    view.setBackgroundTintList(new ColorStateList(new int[][]{new int[]{0}}, new int[]{getResources().getColor(R.color.colorPrimary)}));
                }

            }
        });
您使用的是
if(favSelected=false)
这是对favSelected的赋值,请像
(favSelected=false)
一样使用

对于比较,我们使用
=
符号而不是
=

所以像这样修改代码

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @TargetApi(Build.VERSION_CODES.LOLLIPOP)
            @Override
            public void onClick(View view) {

                if (!favSelected) {
                    favSelected = true;
                    view.setBackgroundTintList(new ColorStateList(new int[][]
                            {new int[]{0}}, new int[]{getResources().getColor(R.color.colorAccent)}));
                } else if (favSelected) {
                    favSelected = false;
                    view.setBackgroundTintList(new ColorStateList(new int[][]{new int[]{0}}, new int[]{getResources().getColor(R.color.colorPrimary)}));
                }

            }
        });