【问题标题】:Change floating action button color on press按下时更改浮动操作按钮的颜色
【发布时间】:2016-02-12 06:29:00
【问题描述】:

我想将浮动操作按钮用作某种收藏按钮,即书签功能。我使用的是boolean,初始化如下:

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)}));
            }

        }
    });

但它没有用。预期的功能有点像复选框

【问题讨论】:

    标签: java android floating-action-button


    【解决方案1】:

    试试这个代码来改变你按下状态下的 FAB 颜色:

        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));
    

    【讨论】:

      【解决方案2】:

      你正在使用if(favSelected = false)这是favSelected的赋值,请使用if(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)}));
                      }
      
                  }
              });
      

      【讨论】:

        猜你喜欢
        • 2015-09-07
        • 1970-01-01
        • 2020-01-21
        • 2018-12-11
        • 1970-01-01
        • 2022-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-01
        相关资源
        最近更新 更多