相关疑难解决方法(0)

如何重置CoordinatorLayout控制的工具栏位置?

我正在开发的应用程序包含一个在Activity中实现的导航抽屉.活动布局如下:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<android.support.v4.widget.DrawerLayout
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/coordinator"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

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

        <include
            android:id="@+id/appbar"
            layout="@layout/appbar" />

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

    <android.support.design.widget.NavigationView
        android:id="@+id/navigation_drawer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:headerLayout="@layout/header_drawer"
        app:menu="@menu/menu_nav">
    </android.support.design.widget.NavigationView>

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

</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

这是一种非常常见的模式,只有经常更改的是容器布局中的Fragment.

如果任何片段具有滚动元素,则在滚动时,CoordinatorLayout将很乐意进行位置转换,包括工具栏/ AppBarLayout.

这里真正的问题是,当Fragment被替换时,工具栏的位置保持不变,即,如果隐藏工具栏,它将保持不变.

结果如下:

这个:

滚动后

卡住:

然后改变

如何在这种情况下重置工具栏位置?

编辑: 可能是一个错误,只有在重新启动应用程序时才会调用AppBarLayout偏移更改侦听器(按下后退按钮并打开应用程序),并在激烈的投掷后停止再次调用.

android navigation-drawer android-design-library androiddesignsupport

50
推荐指数
3
解决办法
2万
查看次数

可折叠工具栏:设置工具栏在onCreate中应折叠的程度

我正在创建一个ListView及其相应的DetailView应用程序.我的ListView物品如果点击则将用户带到DetailViewActivity.

DetailViewActivity,我已经实现了可折叠工具栏.现在,每次DetailViewActivity打开时,都会ImageView在可折叠工具栏中设置不同的图像(具有不同的尺寸).

我希望Toolbar默认情况下应该打开一定的高度(例如256dp),但如果图像高度大于该高度,则用户应该能够向下拉以查看图像的其余部分.(完全像Whatsapp)

我已设法以编程方式设置Toolbar每次打开活动时的高度,但问题是,Toolbar始终完全展开.因此,如果图像较大,默认情况下工具栏非常大.无论图像的高度如何,我希望它折叠到256dp.


我的布局代码是:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/rootLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

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

            <android.support.design.widget.CollapsingToolbarLayout
                android:id="@+id/collapsingToolbarLayout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                app:contentScrim="?attr/colorPrimary"
                app:expandedTitleMarginStart="@dimen/expanded_toolbar_title_margin_start"
                app:layout_scrollFlags="scroll|exitUntilCollapsed">

                <ImageView
                    android:id="@+id/image"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:scaleType="centerCrop"
                    android:src="@drawable/background_navdrawer"
                    app:layout_collapseMode="parallax"
                    app:layout_collapseParallaxMultiplier="0.7"/>

                <View
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_marginTop="130dp"
                    android:background="@drawable/gradient_header_background"
                    app:layout_collapseMode="parallax"
                    app:layout_collapseParallaxMultiplier="0.1"/>

                <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:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>


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

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


        <android.support.v4.widget.NestedScrollView
            android:id="@+id/detail_nested_scroll_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior">

            <FrameLayout
                android:id="@+id/detail_container"
                android:layout_width="match_parent"
                android:layout_height="match_parent" …
Run Code Online (Sandbox Code Playgroud)

android android-collapsingtoolbarlayout

13
推荐指数
1
解决办法
4133
查看次数

折叠工具栏仅适用于导航视图中的一个片段

问题

我有一个带有不同碎片的导航抽屉.每个Fragment应该使用的默认工具栏,除了Fragment需要折叠的工具栏Toolbar.

我的问题

如何在片段的工具栏之间切换?

java xml android android-layout android-fragments

9
推荐指数
3
解决办法
3138
查看次数

如何以编程方式显示CoordinatorLayout中的折叠元素?

CoordinatorLayout在博客中有描述:http://android-developers.blogspot.ru/2015/05/android-design-support-library.html

<android.support.design.widget.CoordinatorLayout
    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.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

  <android.support.design.widget.AppBarLayout
          android:layout_width="match_parent"
          android:layout_height="wrap_content">
     <android.support.v7.widget.Toolbar
              ...
              app:layout_scrollFlags="scroll|enterAlways">

     <TextView
              ...
              app:layout_scrollFlags="scroll|enterAlways">
   </android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)

里面AppBarLayout我有ToolbarTextView额外的状态信息.AppBarLayout可以折叠(滚动后).有时我需要显示AppBarLayout才能显示已更改的状态.

如何以编程方式执行?

android android-layout material-design coordinator-layout android-appbarlayout

7
推荐指数
1
解决办法
6220
查看次数

Android:CollapsingToolbarLayout和SearchView,文本重叠

将CollapsingToolbarLayout标题与SearchView文本重叠时,我没有什么问题.何时展开CollapsingToolbarLayout,没有问题:

在此输入图像描述

但是当折叠时,文本重叠:

在此输入图像描述

怎么解决?

android searchview android-collapsingtoolbarlayout

5
推荐指数
1
解决办法
2734
查看次数

params.getBehaviour() 返回空值

我在玩新的 Android 设计库。CollapsingToolbarLayout 完美运行。但是,我无法将工具栏的默认状态设置为折叠。

我正在尝试实施此处此处显示的解决方案

我在活动的 onResume 中调用以下代码:

   CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams();
    AppBarLayout.Behavior behavior = (AppBarLayout.Behavior) params.getBehavior();
    if(behavior!=null)
    {
        Log.d("DEBUG", "Behaviour is Not Null ");
        int[] consumed = new int[2];
        behavior.onNestedPreScroll(coordinator, appBarLayout, null, 0, 1000,consumed);
//      behavior.onNestedFling(coordinator, appBarLayout, null, 0, 10000, true);
     }
     else
          Log.d("DEBUG", "Behaviour is Null " );
Run Code Online (Sandbox Code Playgroud)

但是,params 返回的行为为空。我的 xml 代码与此处相同,除了我不使用抽屉并且 CordinatorLayout 是我的根布局。

编辑:我之前尝试将 AppBarLayout.Behavior 切换为 AppBarLayout.ScrollingViewBehavior 并将 AppBarLayout 的 layout_behavior 设置为 @string/appbar_scrolling_view_behavior,但它导致了奇怪的布局。

罗宾的回答效果很好。为了补充这一点,还可以使用 AppBarLayout 中的以下标记在 xml 中设置行为:

app:layout_behavior="android.support.design.widget.AppBarLayout$Behavior"
Run Code Online (Sandbox Code Playgroud)

android toolbar android-design-library

5
推荐指数
1
解决办法
2191
查看次数

Android:以编程方式折叠并展开CollapsingToolbarLayout

我在CollapsingToolbarLayout中有ImageView和TabLayout(4个标签),现在我想在点击Tabs(2,3,4)时折叠Appbar,对于第一个标签它应该正常工作(按照滚动).有没有办法以编程方式展开和折叠Appbar?

然而,我已经看到解决方案,appBarLayout.setExpanded(false)折叠Appbar,但它再次能够向下拖动.我想在点击Tab 1之前阻止AppBar扩展?

android

4
推荐指数
1
解决办法
3494
查看次数