1

在棉花糖之下,我們得到了副本/過去(感謝上帝)的頂部操縱桿的騎行,而我們有一個浮動操作欄。我現在的問題是如何定製我的動作條的浮動是黑暗的,而不是白色的背景和文本顏色(不改變我的應用程序的全部主題,那就是Theme.material.light.NoactionBar)如何自定義浮動ActionBar的背景?

enter image description here

回答

0

試試這個:

fab.setBackgroundTintList(ColorStateList.valueOf(ContextComp‌​at.getColor(getActiv‌​ity(), R.color.yellow))); 
+0

是什麼晶圓廠改變從活動類中的背景是什麼?如何以及在哪裏找到它?是否有可能在styles.xml中做到這一點? – loki

1

我認爲這是不可能的。經過很長時間的挖掘android源代碼,我發現工具欄實現了一個android內部類com.android.internal.widget.FloatingToolbar.FloatingToolbarPopup

彈出容器由命名爲com.android.internal.R.layout.floating_popup_container其中使用此背景機器人佈局充氣:背景= 「ATTR/floatingToolbarPopupBackgroundDrawable?」

似乎沒有辦法從xml樣式設置屬性floatingToolbarPopupBackgroundDrawable。

但是你可以通過使用Java反射

@Override 
public void onActionModeStarted(ActionMode mode) 
{ 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) 
    { 
     try 
     { 
      Field field = mode.getClass().getDeclaredField("mFloatingToolbar"); 
      field.setAccessible(true); 
      Object mFloatingToolbar = field.get(mode); 
      field = mFloatingToolbar.getClass().getDeclaredField("mPopup"); 
      field.setAccessible(true); 
      Object mPopup = field.get(mFloatingToolbar); 
      field = mPopup.getClass().getDeclaredField("mContentContainer"); 
      field.setAccessible(true); 
      ViewGroup mContentContainer = (ViewGroup)field.get(mPopup); 
      mContentContainer.setBackgroundColor(Color.RED); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 
    super.onActionModeStarted(mode); 
}