1

マシュマロの下では、コピー/過去(感謝の神)のトップアクションバーに乗っていて、代わりにフローティングアクションバーがあります。私の問題は今(Theme.material.light.NoactionBarである私のアプリの完全なテーマを変更せずに)私の浮動アクションバーの背景とテキストの色が白暗くないようにカスタマイズする方法をフローティングアクションバーの背景をカスタマイズするにはどうすればよいですか?

enter image description here

答えて

0

です試してみてください:

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

ファブ何を使用して、アクティビティクラスから背景を変更できますか?どのようにそれを見つけるのか? styles.xmlでそれを行うことは可能ですか? – loki

1

私はそれを行うことは不可能だと思います。長い時間のアンドロイドのソースコードを掘り下げた後、私はツールバーがアンドロイドの内部クラスを実装していることを発見しました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); 
} 
関連する問題