繁体   English   中英

在运行时更改FloatingActionButton背景颜色

[英]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;
        }
}

没有做到这一点。 有人可以指出我的错误,还是可以提供解决方案?

用这个:

button.setBackgroundColor(ContextCompat.getColor(this, R.color.colorGrey));

来自这里的更多

好的,我在测试项目中插入了您的代码(改动很小),就可以了。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM