2016-02-12 4 views
0

Я хочу использовать кнопку плавающего действия как какую-то любимую кнопку, т. Е. Функцию закладки. Я использую boolean, отформатированы следующим образом:Изменить цвет кнопки действия при нажатии

boolean favSelected = false; 

и моя деятельность будет получать некоторую информацию из моей базы данных SQLite, чтобы определить, будет ли favSelected быть истинным или ложным. Если это правда, я бы хотел, чтобы мой fab был другого цвета, и если false, то оригинальный цвет. Я пробовал:

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

     } 
    }); 

но это не сработало. Предназначена функция немного как флажок

ответ

1

Вы используете 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)})); 
       } 

      } 
     }); 
2

Попробуйте этот код, чтобы изменить цвет 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));