2015-06-19 97 views
9

这是我第一次使用CoordinatorLayout,并且我不太明白它是如何工作的。LinearLayout重叠支持协调器布局

我的LinearLayout是重叠的工具列的,就好像我是一个FrameLayout里,或RelativeLayout的,我不知道如何告诉它去以下(如Android:与RelativeLayout的layout_below)

这里是我的代码:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/main_content" 
    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="192dp" 
     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="match_parent" 
      app:contentScrim="?attr/colorPrimary" 
      app:expandedTitleMarginEnd="64dp" 
      app:expandedTitleMarginStart="48dp" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

      <ImageView 
       android:id="@+id/backdrop" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:fitsSystemWindows="true" 
       android:src="@drawable/logo2" 
       app:layout_collapseMode="pin" /> 

      <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" /> 

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

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/appbar" 
     android:orientation="vertical" 
     android:paddingBottom="@dimen/activity_vertical_margin" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingRight="@dimen/activity_horizontal_margin" 
     android:paddingTop="@dimen/activity_vertical_margin"> 

      .... Very Large Form ... 
    </LinearLayout> 
</android.support.design.widget.CoordinatorLayout> 

另一个疑问:我看到的几乎所有例子都是用CoordinateLayout来管理RecyclerView。 我的布局不是一个RecyclerView,只是一个非常长的形式。这样做有意义吗?

+0

结束标记被打破,因为没有开放标记 – pskink

+0

upps我的错误粘贴代码!修正了 –

回答

10

尝试在NestedScrollView中嵌套您的内容。不要忘记包含layout_behavior XML标签。

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

    <!-- Your scrolling content --> 

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

其他资源: http://developer.android.com/reference/android/support/design/widget/AppBarLayout.html

+0

,因为如果你忘了做全能的'layout_behavior',你将会有一段艰难的时间,弄清楚为什么你的操作栏会在滚动视图下进入,无论如何。我很高兴我找到了这个解决方案,现在更加快乐,现在'错误的膨胀类android.support.v7.widget.AppCompatSpinner'在我身后(不敢将半透明的颜色传递给它的背景)。现在我应该回过头来看看为什么我的大部分文本视图都会选择主题/特定的textColor属性,而其中两个不会。啧啧......我真的很想念那些没有任何材料和支持疯狂的好日子。 – kellogs

-2

从developer.android.com

“CoordinatorLayout是一个超级动力的FrameLayout CoordinatorLayout旨在用于两个基本用例: 作为顶级应用程序装饰或镀铬布局 作为与一个或多个子视图进行特定交互的容器 通过为Coo的子视图指定行为rdinatorLayout可以在单个父项中提供许多不同的交互,并且这些视图也可以相互交互。 View类可以使用DefaultBehavior注释将其用作CoordinatorLayout的子项时指定默认行为。 行为可用于实现各种交互和额外的布局修改,从滑动抽屉和面板到滑动可忽略的元素以及在移动和动画时粘到其他元素的按钮。 CoordinatorLayout的孩子可能有一个锚点。该视图ID必须对应于CoordinatorLayout的任意后代,但它可能不是被锚定的子对象本身或被锚定的子对象的后代。这可以用来放置浮动的观点相对于其他任意内容窗格。”

所以,你可以更改根视图的LinearLayout(垂直方向),或使用滚动视图,这将线性排列的孩子。

+3

这不是一个真正的答案,你可以引用这个,但是你根本没有帮助他和社区。 – Leonardo

0

迟到的回答,但它仍可能帮助别人。

附上的CoordinatorLayout所有chidren成LinearLayout垂直方向
它为我工作。