在 Marshmallow 下,我们得到了复制/过去的顶部操作栏(感谢上帝),我们有一个 float 的操作栏。我现在的问题是如何将我的 float 操作栏的背景和文本颜色自定义为黑色而不是白色(不更改我的应用程序的完整主题,即 Theme.material.light.NoactionBar)
最佳答案
我认为这是不可能的。经过长时间深入研究 android 源代码后,我发现工具栏实现了一个 android 内部类 com.android.internal.widget.FloatingToolbar.FloatingToolbarPopup。
弹出容器从名为 com.android.internal.R.layout.floating_popup_container 的布局膨胀,它使用此背景 android:background="?attr/floatingToolbarPopupBackgroundDrawable".
似乎没有办法从xml样式设置属性floatingToolbarPopupBackgroundDrawable。
但是,您可以使用 java 反射更改 Activity 类的背景
@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);
}
关于android - 如何自定义 float ActionBar的背景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39570788/