在Marshmallow下,我们获得了复制/过去(感谢上帝)的顶部操作栏,我们有一个浮动操作栏。我现在的问题是如何自定义浮动Actionbar的背景和文本颜色为黑色而不是白色(不更改我的应用程序的主题是Theme.material.light.NoactionBar)
答案 0 :(得分:1)
我认为这样做是不可能的。经过很长时间深入挖掘android源代码,我发现工具栏实现了一个android内部类 com.android.internal.widget.FloatingToolbar.FloatingToolbarPopup 。
弹出容器从名为 com.android.internal.R.layout.floating_popup_container 的布局中膨胀,后者使用此背景 android:background =“?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);
}
答案 1 :(得分:0)
试试这个:
fab.setBackgroundTintList(ColorStateList.valueOf(ContextCompat.getColor(getActivity(), R.color.yellow)));