Java 在安卓系统中打开片段时,背景变暗
如何在打开片段时使整个背景变暗?创建DialogFragment时也是如此 现在,我可以使用高度和宽度为match_parent的视图来调暗应用程序窗口的背景。但是使用它不会使DialogFragment出现的状态栏背景变暗 当创建或打开片段时,我想使整个背景变暗,包括应用程序窗口和状态栏 现在这种情况发生在DialogFragment上。但我只能使用片段。我就是这么做的 除了片段的主布局外,我还采用了高度和宽度匹配的相对布局Java 在安卓系统中打开片段时,背景变暗,java,android,android-layout,android-fragments,background,Java,Android,Android Layout,Android Fragments,Background,如何在打开片段时使整个背景变暗?创建DialogFragment时也是如此 现在,我可以使用高度和宽度为match_parent的视图来调暗应用程序窗口的背景。但是使用它不会使DialogFragment出现的状态栏背景变暗 当创建或打开片段时,我想使整个背景变暗,包括应用程序窗口和状态栏 现在这种情况发生在DialogFragment上。但我只能使用片段。我就是这么做的 除了片段的主布局外,我还采用了高度和宽度匹配的相对布局 <RelativeLayout android
<RelativeLayout
android:id="@+id/rl"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/background_transition"/>
然后打电话
transition.startTransition(300);
使背景变暗,以及
transition.reverseTransition(300);
返回正常背景
希望能有所帮助。试试这个:
fragmentParentLayout.getForeground().setAlpha(215);
我尝试了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()方法中,创建颜色变量,并将其作为可绘制颜色添加到视图的前景中
if (Build.VERSION.SDK_INT >= 23) {
val color: Int = R.color.black_transparent
view.foreground = ColorDrawable(resources.getColor(color, resources.newTheme()))
注
确保禁用任何可能在back片段中可见的按钮,否则,如果用户按下按钮,应用程序将崩溃
buttonRegisterEvent.isEnabled = false
最后一步,如果希望用户导航回前一个片段,请确保删除前景色并启用可能已禁用的任何按钮 您是否尝试过,getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)?是的,我在fragment onCreateView中尝试过,但没有成功。@kanudo您是如何实现的?@ashwinmahajan正在设置状态和导航栏颜色的动画。它感觉有点黑客味,但确实有效这不是我需要的朋友,这与我现在使用的类似。你可以单独调暗状态栏,请参阅onCreateView()中的崩溃我的应用程序
if (Build.VERSION.SDK_INT >= 23) {
val color: Int = R.color.black_transparent
view.foreground = ColorDrawable(resources.getColor(color, resources.newTheme()))
buttonRegisterEvent.isEnabled = false