[英]Change FloatingActionButton background color during Runtime
在运行时单击时,我需要更改FloatingActionButton
的背景颜色。 我的代码:
public static void setButtonTint(FloatingActionButton button, ColorStateList tint) {
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP) {
((TintableBackgroundView) button).setSupportBackgroundTintList(tint);
} else {
ViewCompat.setBackgroundTintList(button, tint);
}
}
public void switchFABmode(){
switch (floatingActionButtonMode){
case 0:
setButtonTint(shareFAB,getResources().getColorStateList(R.color.colorGrey));
setButtonTint(deleteFAB,getResources().getColorStateList(R.color.colorPrimary));
floatingActionButtonMode = 1;
Toast.makeText(this, "Tap time to delete",Toast.LENGTH_SHORT).show();
break;
case 1:
shareFAB.setBackgroundColor(ContextCompat.getColor(this, R.color.colorPrimary));
deleteFAB.setBackgroundColor(ContextCompat.getColor(this, R.color.colorGrey));
Toast.makeText(this,"Tap time to share", Toast.LENGTH_SHORT).show();
floatingActionButtonMode = 0;
break;
}
}
没有做到这一点。 有人可以指出我的错误,还是可以提供解决方案?
好的,我在测试项目中插入了您的代码(改动很小),就可以了。
FloatingActionButton fab;
int floatingActionButtonMode = 0;
public static void setButtonTint(FloatingActionButton button, ColorStateList tint) {
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP) {
((TintableBackgroundView) button).setSupportBackgroundTintList(tint);
} else {
ViewCompat.setBackgroundTintList(button, tint);
}
}
public void switchFABmode(){
switch (floatingActionButtonMode){
case 0:
setButtonTint(fab,getResources().getColorStateList(R.color.colorPrimary));
floatingActionButtonMode = 1;
Toast.makeText(getActivity(), "Tap time to delete",Toast.LENGTH_SHORT).show();
break;
case 1:
setButtonTint(fab,getResources().getColorStateList(R.color.colorAccent));
Toast.makeText(getActivity(),"Tap time to share", Toast.LENGTH_SHORT).show();
floatingActionButtonMode = 0;
break;
}
}
并在片段的onCreateView
:
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
final View v = inflater.inflate(R.layout.map, container, false);
fab = v.findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switchFABmode();
}
});
return v;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.