我想使用浮动操作按钮作为某种喜欢的按钮,即书签功能。我正在使用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)}));
}
}
});
但它不起作用。预期的功能有点像复选框
答案 0 :(得分: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));
答案 1 :(得分:1)
您正在使用private void configureButton() {
get_gps.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{
Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.INTERNET, Manifest.permission.ACCESS_NETWORK_STATE
}, 10);
}
}
locationManager.requestLocationUpdates("gps", 5000, 0, locationListener);
}
});
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case 10:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_DENIED) {
configureButton();
return;
}
}
}
这是对favSelected的分配,请像if(favSelected = false)
一样使用。
对于比较,我们使用(favSelected == false)
符号代替==
所以像这样修改你的代码
=