2016-03-07 72 views
0

這是我的代碼:無法更改FloatingActionButton的背景和backgroundTint背景顏色,支持設計23.2.0

<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:backgroundapp:backgroundTint,但這些都沒有用,FloatingActionButton's背景顏色不會改變,並且或者app:rippleColor,當我按下它的顏色不是我設置的按鈕,看起來像主題中的accentColor。

爲什麼這些屬性不起作用?

如何更改FloatingActionButton's背景和波紋顏色?

我曾看過這個:Android changing Floating Action Button color。有些答案可能在22工作,但我並沒有在23

回答

1

找到一個有用的方法浮動操作按鈕將顏色從服用屬性colorAccent中的顏色styles.xml.Set的風格,並設置樣式這個浮動操作按鈕,然後它會工作

+0

這可能是有用的,但機器人:colorAccent需要API等級21,我的API級別是14 –

+0

嘗試像這樣使用一些顏色而不在st中使用android命名空間你正在使用的yle。 – srinivas

+0

我曾試過這個,不行。也許,我用23 –

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