在Android中打开片段时,暗淡完整背景

时间:2017-08-17 06:43:25

标签: java android android-layout android-fragments background

如果在创建DialogFragment时同样打开片段,如何调暗完整背景。

Rightnow我能够使用match_parent作为高度和宽度的视图来调暗app窗口的背景。但是使用它 不会使状态栏的背景变暗 ,这会在DialogFragment中出现。

我想在创建或打开片段时调暗完整的背景,包括应用程序窗口和状态栏。

现在,DialogFragment会发生这种情况。但我必须只使用片段。

3 个答案:

答案 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

最后一步,如果要让用户导航回前一个片段,请确保删除前景色并启用您可能已禁用的任何按钮。