【问题标题】:Single Activity and Multiple Fragment with different toolbar layouts具有不同工具栏布局的单个活动和多个片段
【发布时间】:2018-11-23 10:10:17
【问题描述】:

我的应用中有一个具有单活动多片段架构的应用。问题是,有一个带有正常工具栏的列表片段,用户可以从这里单击并转到详细信息屏幕。现在在详细信息屏幕中,我希望 Activity 成为具有 CoordinatorLayout 和折叠工具栏的全屏,其中 StatusBar 区域被布局覆盖为透明。当用户返回列表屏幕时。 Activity 应该禁用全屏并再次获取 StatusBar 颜色。

这里的问题是我使用以下代码将活动设置为全屏:

window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

当用户返回时,我将通过以下代码禁用全屏:

window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_VISIBLE

禁用全屏后,在我之前的片段中,我的 UI 边界被剪掉了。

提前致谢。

【问题讨论】:

    标签: android toolbar fullscreen android-collapsingtoolbarlayout


    【解决方案1】:

    在你的 DetailsActivity 中试试这个 -

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // remove title
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.main);
    }
    

    【讨论】:

    • 这将删除我的状态栏。我不想要那个。我想在我的屏幕上重叠状态栏。
    • @mithil1501 那么你应该只使用requestWindowFeature(Window.FEATURE_NO_TITLE)
    【解决方案2】:

    我会推荐使用

    android:theme="@style/AppTheme.NoActionBar" 为您的活动。

    并在您的 XML activity 中构建自定义工具栏

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar_top"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:minHeight="?attr/actionBarSize"
        android:background="@color/action_bar_bkgnd"
        app:theme="@style/ToolBarTheme" >
    
    
         <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Toolbar Title"
            android:layout_gravity="center"
            android:id="@+id/toolbar_title" />
    
    
        </android.support.v7.widget.Toolbar>
    

    在你的活动课上

    Toolbar toolbarTop = (Toolbar) findViewById(R.id.toolbar_top);
    TextView mTitle = (TextView) toolbarTop.findViewById(R.id.toolbar_title);
    

    现在对于您的fragments,您所要做的就是显示或隐藏此toolbar 取决于您想要相同或另一个toolbarfragment,您可以使用OnResume 做到这一点和OnPause 的片段。

    【讨论】:

    • 但是状态栏呢?如何在片段之间切换,状态栏区域在一个片段中覆盖而在另一个片段中不显示。
    • 在 OnResume 和 OnPause 的活动中,您想要更改状态栏,但您的代码在那里隐藏它​​并为您提供全屏
    猜你喜欢
    • 2018-06-11
    • 2015-10-05
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    相关资源
    最近更新 更多