CoordinatorLayout中工具栏下方的进度条

时间:2016-07-29 14:19:56

标签: android android-toolbar android-coordinatorlayout

我有一个像这样的布局XMl:

<CoordinatorLayout>
    <AppBarLayout>
        <CollapsingToolbarLayout>
            <RelativeLayout/>
            <Toolbar/>
        </CollapsingToolbarLayout>
    </AppBarLayout>
    <RecyclerView/>
</CoordinatorLayout>

我想在工具栏下方和回收站视图上方添加一个水平进度条,以指示回收站视图项的数据加载。

使用相对布局,我可以简单地为操作栏下方的进度条提供android:layout_below属性。但作为协调员布局和工具栏的新手,我无法得到结果。

3 个答案:

答案 0 :(得分:1)

<CoordinatorLayout>
    <AppBarLayout>
        <CollapsingToolbarLayout>
            <RelativeLayout/>
            <Toolbar/>
        </CollapsingToolbarLayout>
    </AppBarLayout>
    <LinearLayout>
      <ProgressBar>
      <RecyclerView/>
    </LinearLayout>
</CoordinatorLayout>

以上内容适用于您想要的内容。确保线性布局上的方向是垂直的。唯一需要注意的是,如果您的回收站视图很大,您可能需要将线性布局包装在嵌套滚动视图中,假设您希望进度条也滚动。

答案 1 :(得分:1)

如果您想ProgressBar Toolbar Toolbar LinearLayout置于ProgressBar内,请将LinearLayout作为此orientation="vertical" 的第一个孩子。分配

ProgressBar

如果您希望RecyclerView始终可见,请将LinearLayout包裹在ProgressBar内,并将app:layout_behavior="@string/appbar_scrolling_view_behavior" 作为第一个孩子。设置方向。记得添加

LinearLayout

作为{{1}}的参数(必须将滚动传递给孩子)

答案 2 :(得分:0)

将ProgressBar放置为CoordinatorLayout的直接子代。

<CoordinatorLayout>
    <AppBarLayout>
        <CollapsingToolbarLayout>
            <ImageView/>
            <Toolbar/>
        </CollapsingToolbarLayout>
    </AppBarLayout>
    <NestedScrollView>
    </NestedScrollView>
    <ProgressBar/>
    <BottomAppBar/>
    <FloatingActionButton/>
</CoordinatorLayout>

对于ProgressBar,请使用layout_anchor并将其锚定为AppBarLayout(等于AppBarLayout ID)。将layout_anchorGravity设置为底部。

    <ProgressBar
    android:id="@+id/progressBar"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:indeterminate="true"
    android:visibility="@{viewModel.loading ? View.VISIBLE : View.GONE}"
    app:layout_anchor="@id/appBarLayout"
    app:layout_anchorGravity="bottom" />

我附上代码和预览屏幕截图。 Horizontal Progress Bar showing properly