Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何自定义浮动操作栏的背景?_Android_Android Actionbar_Android Theme_Android Styles_Android Actionmode - Fatal编程技术网

Android 如何自定义浮动操作栏的背景?

Android 如何自定义浮动操作栏的背景?,android,android-actionbar,android-theme,android-styles,android-actionmode,Android,Android Actionbar,Android Theme,Android Styles,Android Actionmode,在棉花糖下,我们得到了复制/过去的顶部操作栏(感谢上帝),我们有一个浮动操作栏。我现在的问题是如何自定义浮动Actionbar的背景和文本颜色,使其为深色而非白色(而不更改我的应用程序的完整主题,即theme.material.light.NoactionBar) 试试这个: fab.setBackgroundTintList(ColorStateList.valueOf(ContextComp‌​at.getColor(getActiv‌​ity(), R.color.yellow)));

在棉花糖下,我们得到了复制/过去的顶部操作栏(感谢上帝),我们有一个浮动操作栏。我现在的问题是如何自定义浮动Actionbar的背景和文本颜色,使其为深色而非白色(而不更改我的应用程序的完整主题,即theme.material.light.NoactionBar)

试试这个:

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

我认为那是不可能的。在长时间深入研究android源代码之后,我发现工具栏实现了一个android内部类com.android.internal.widget.FloatingToolbar.FloatingToolbarPopup

弹出式容器正在从名为com.android.internal.R.layout.floating\u popup\u容器的布局中膨胀,该布局使用此背景android:background=“?attr/floatingToolbarPopupBackgroundDrawable”

似乎无法从xml样式设置属性floatingToolBarPopubBackgroundDrawable

但是,您可以使用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);
}

什么是晶圆厂?如何以及在哪里找到它?是否可以在styles.xml中执行此操作?