gpt4 book ai didi

android - 使用 fragment 时如何正确实现状态栏后面的 View 内容

转载 作者:行者123 更新时间:2023-12-05 00:08:40 26 4
gpt4 key购买 nike

我正在尝试将我的 ImageBackdrop 从折叠工具栏放在状态栏后面,我已经用 Drawer 和 navigationView 做到了,但我不能用我的 fragment 做到这一点,在 cheesequare 演示中,Chris 做到了,我可以那样做,但它不使用单个 Activity 应用程序和 fragment 转换,所以这不是我想要的。

我的风格:

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>

</style>

我的 v21 风格:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>

<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
</style>

我的主要 Activity :

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer_layout"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">

<include
layout="@layout/content_main"/>

<android.support.design.widget.NavigationView
android:id="@+id/navigationView"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@color/window_background_white"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header"
app:itemTextColor="@color/title_text_color"
app:menu="@menu/drawer_menu"/>

</android.support.v4.widget.DrawerLayout>

我的 content_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
android:id="@+id/fragment_container"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

我的 fragment :

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
style="@style/AppTheme.CoordinatorLayout"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">

<android.support.design.widget.AppBarLayout
android:id="@+id/appbarLayout"
android:layout_width="match_parent"
android:layout_height="@dimen/detail_backdrop_height"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="@dimen/detail_backdrop_height"
android:fitsSystemWindows="true"
app:collapsedTitleTextAppearance="@style/AppTheme.CollapsingToolbar.Text.Transparent"
app:contentScrim="?attr/colorPrimaryDark"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
app:expandedTitleTextAppearance="@style/AppTheme.CollapsingToolbar.Text.Transparent"
app:layout_scrollFlags="scroll|enterAlwaysCollapsed|enterAlways"
app:title="">

<ImageView
android:id="@+id/imageView_backdrop"
android:layout_width="match_parent"
android:layout_height="@dimen/detail_backdrop_height"
android:adjustViewBounds="true"
android:fitsSystemWindows="true"
android:scaleType="centerCrop"
app:layout_collapseMode="parallax"/>


<TextView
android:id="@+id/textView_expanded_title"
style="@style/AppTheme.CollapsingToolbar.TextView.Multiline"

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:titleTextColor="@color/colorAccent"/>


</android.support.design.widget.CollapsingToolbarLayout>

</android.support.design.widget.AppBarLayout>

<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
style="@style/AppTheme.RecyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="fill_vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

</android.support.design.widget.CoordinatorLayout>

我不需要后面内容的另一个 fragment

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
style="@style/AppTheme.CoordinatorLayout"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true">


<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways|snap"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:titleTextColor="@color/colorAccent"/>

<android.support.design.widget.TabLayout
android:id="@+id/about_tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabGravity="fill"/>

</android.support.design.widget.AppBarLayout>


<ViewSwitcher
android:id="@+id/viewSwitcher"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">

<include layout="@layout/progress_bar_color_primary"/>

<android.support.v4.view.ViewPager
android:id="@+id/about_viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

</ViewSwitcher>


</android.support.design.widget.CoordinatorLayout>

我的成就:

如果我将 android:fitsSystemWindows="false" 放在 DrawerLayout 中,我可以在具有 CollapsingToolbar 的 fragment 中实现所需的效果,但在 ViewPager 中我有一个奇怪的灰色状态栏。

drawerLayout 中的 android:fitsSystemWindows="false" 无法达到预期效果:

Desired effect

但在第二个 fragment 中,它的内容在状态栏后面,我不想要它。

One of the issues

我读过的内容:

StackOverflow ,

Medium

最佳答案

好的,问题是 content_main.xml 它总是被替换,所以我认为没有必要拥有 android:fitsSystemWindows 属性,但我错了,添加 android:fitsSystemWindows="true"解决了问题。

代码段 content_main:

    <?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
android:id="@+id/fragment_container"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"/>

重要: 如果像我一样,当 coordinatorLayout 有 android:fitsSystemWindows="true"时,你会在 viewPager 中发现一个错误,请看这里:CoordinatorLayout status bar padding disappears from ViewPager 2nd page

关于android - 使用 fragment 时如何正确实现状态栏后面的 View 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35467576/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com