这是我的代码:
<android.support.design.widget.FloatingActionButton
android:id="@+id/enter_floating_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="40dip"
android:layout_marginRight="10dip"
android:clickable="true"
app:background="#00FF00"
app:backgroundTint="#00FF00"
app:rippleColor="@android:color/red"
app:fabSize="normal"
android:src="@drawable/ic_done" />
正如您所看到的,我设置了app:background
和app:backgroundTint
,但这些都没用,FloatingActionButton's
背景颜色没有变化,app:rippleColor
,当我按下按钮它的颜色不是我设置的,看起来像主题中的accentColor。
为什么这些属性不起作用?
如何更改FloatingActionButton's
背景和波纹颜色?
我见过这个:Android changing Floating Action Button color。一些答案可能在22中有效,但我在23中找不到有用的方法。
答案 0 :(得分:1)
浮动操作按钮将从styles.xml中的colorAccent属性获取颜色。设置样式中的颜色并为此浮动操作按钮设置该样式然后它将起作用
答案 1 :(得分:0)
尝试在FloatingActionButton类中以编程方式添加波纹颜色:
public RippleView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
mContext = context;
init();
TypedArray a = context.obtainStyledAttributes(attrs,
R.styleable.RippleView);
mRippleColor = a.getColor(R.styleable.RippleView_rippleColor,
mRippleColor);
mAlphaFactor = a.getFloat(R.styleable.RippleView_alphaFactor,
mAlphaFactor);
mHover = a.getBoolean(R.styleable.RippleView_hover, mHover);
a.recycle();
}
public void init() {
mDensity = getContext().getResources().getDisplayMetrics().density;
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setAlpha(20);
setRippleColor(Color.BLACK, 0.2f);
// setRippleColor(Color.parseColor(getResources().getColor(R.color.greycolor), 0.2f);
// setRippleColor(0x000000, 0.1f);
}
public void setRippleColor(int rippleColor, float alphaFactor) {
mRippleColor = rippleColor;
mAlphaFactor = alphaFactor;
}
public void setHover(boolean enabled) {
mHover = enabled;
}