从 Fragment 添加/删除 ActionBar 阴影

fso*_*ety 5 android android-fragments android-actionbar

我有一个在片段之间切换的活动。

我希望操作栏完整显示一些片段,而另一些片段我希望它是透明的。

我使用了在这个问题的答案中找到的技巧,其中我基本上有一个主题:

<item name="windowActionBarOverlay">true</item>
Run Code Online (Sandbox Code Playgroud)

在我的布局中,我想要一个静态/完整的操作栏,我将添加:

`layout_marginTop:"?android:attr/actionBarSize"`
Run Code Online (Sandbox Code Playgroud)

在我想要透明操作栏的片段中,我会这样做:

getActivity().getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.argb(0, 0, 0, 0)));
Run Code Online (Sandbox Code Playgroud)

问题:在后一种情况下,操作栏阴影仍然显示。如果我添加以下内容,我可以禁用它:

<item name="android:windowContentOverlay">@null</item>
Run Code Online (Sandbox Code Playgroud)

但现在当我希望操作栏完全/不透明显示时该怎么办?我希望阴影也随之显示。那么有没有办法触发阴影的开启和关闭呢?

或者,我可以放弃整个造型交易,只做:

getActivity().getSupportActionBar().show(); // or hide
Run Code Online (Sandbox Code Playgroud)

然后在我的布局中,我可以从操作栏中手动添加我想要的后退按钮。在这种情况下的问题是操作栏滑入和滑出并且看起来很草率。我无法打电话:

getActivity().getSupportActionBar().setShowHideAnimationEnabled(false);
Run Code Online (Sandbox Code Playgroud)

因为它告诉我:

ActionBar.setShowHideAnimationEnabled 只能从同一库组内调用 (groupId=com.android.support)

那么我如何根据显示的片段添加/删除操作栏阴影?否则,如何隐藏没有动画的操作栏?

谢谢!