如果在创建DialogFragment时同样打开片段,如何调暗完整背景。
Rightnow我能够使用match_parent作为高度和宽度的视图来调暗app窗口的背景。但是使用它 不会使状态栏的背景变暗 ,这会在DialogFragment中出现。
我想在创建或打开片段时调暗完整的背景,包括应用程序窗口和状态栏。
现在,DialogFragment会发生这种情况。但我必须只使用片段。
答案 0 :(得分:1)
这就是我所做的 除了片段的主要布局
之外,我采用了高度和宽度match_parent的相对布局<RelativeLayout
android:id="@+id/rl"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/background_transition"/>
这是我的background_transition文件
<?xml version="1.0" encoding="UTF-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="00FFFFFF" />
<item android:drawable="#B3FFFFFF" />
</transition>
然后为了使背景变暗,在片段
中创建如此的TransitionDrawable对象 private TransitionDrawable transition;
然后致电
transition.startTransition(300);
调暗背景,
transition.reverseTransition(300);
回到正常背景。
希望有所帮助。
答案 1 :(得分:0)
试试这个:
fragmentParentLayout.getForeground().setAlpha(215);
答案 2 :(得分:0)
我尝试了Nuzha的版本,我的应用也崩溃了。
我确实找到了两种可能的解决方案。
1)如果使用以下代码,它将使后片段变白,而不是变暗:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
if (Build.VERSION.SDK_INT >= 23) {
view.alpha = 0.2F
}
注意: 根据您设置的值,“浮点数”越接近0,背景的白色越透明(仅适用于23 +)
2)如果您想要使后部片段变暗(深色)
首先,您可以在资源文件夹中创建一种颜色并使它变得透明。我使用以下一项来获得较暗的效果:#7E000000
接下来,在onViewCreated()方法中,创建颜色的变量,并将其作为ColorDrawable添加到视图的前景。
if (Build.VERSION.SDK_INT >= 23) {
val color: Int = R.color.black_transparent
view.foreground = ColorDrawable(resources.getColor(color, resources.newTheme()))
注意 确保禁用任何在后片段中可见的按钮,否则,如果用户按下该按钮,该应用将崩溃
buttonRegisterEvent.isEnabled = false
最后一步,如果要让用户导航回前一个片段,请确保删除前景色并启用您可能已禁用的任何按钮。