如何在列表视图和应用栏之间放置微调器

时间:2018-08-30 02:34:41

标签: java android android-spinner

我目前正在开发一个用于管理账单的应用程序。我有一个列出账单的活动。我正在尝试在帐单列表和顶部标题之间放置spinner。有没有一种方法可以将spinner放置在listView的顶部,但在应用栏的下面??

这是应用程序的外观:

enter image description here

    

    <android.support.design.widget.AppBarLayout
        android:id="@+id/app_bar"
        android:layout_width="match_parent"
        android:layout_height="@dimen/app_bar_height"
        android:fitsSystemWindows="true"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/toolbar_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            app:contentScrim="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            app:toolbarId="@+id/toolbar">

            <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/AppTheme.PopupOverlay" />

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

    <TextView
        android:id="@+id/dateRangeView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/date_range"
        android:textColor="@android:color/background_light"
        android:textSize="24sp"
        android:textStyle="bold"
        tools:textAlignment="center"
        tools:textColor="@android:color/white" />

    <ProgressBar
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/progressBarBillList"
        android:progressDrawable="@drawable/circular_progress_bar"
        android:layout_gravity="center" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_anchor="@+id/app_bar"
        android:id="@+id/bill_dates"
        app:layout_anchorGravity="bottom|center">

        <Spinner
            android:id="@+id/spinner"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="top"
            android:layout_marginHorizontal="16dp"
            android:background="@android:color/background_light"
            android:entries="@array/date_arrays"
            android:prompt="@string/bill_date_prompt"
            android:spinnerMode="dialog"
            app:layout_anchor="@+id/listBillView"
            app:layout_anchorGravity="top|right" />
    </LinearLayout>

    <include layout="@layout/content_bill_list" app:layout_anchor="@+id/bill_dates" />

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

content_bill_list.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView 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:fillViewport="true"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.yourdirectlink.ydlcms.BillListActivity"
    tools:showIn="@layout/activity_bill_list">
    <ListView
        android:id="@+id/listBillView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true" >
    </ListView>
</android.support.v4.widget.NestedScrollView>

1 个答案:

答案 0 :(得分:0)

对此表示否认

正如评论中所建议的,为什么不使用垂直方向的LinearLayout并将微调器作为第一个高度为wrap_content的子项,然后在其下方将高度为0dp且layout_weight设置为1的列表视图


新提案

看看这个布局。我已经在一个测试应用程序上尝试过

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

<android.support.design.widget.AppBarLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/app_bar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:fitsSystemWindows="true">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/toolbar_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        app:contentScrim="?attr/colorPrimary"
        app:layout_scrollFlags="scroll|exitUntilCollapsed"
        app:toolbarId="@id/toolbar">

        <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/AppTheme.PopupOverlay" />-->

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

<LinearLayout
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/dateRangeView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/date_range"
        android:textColor="@android:color/background_light"
        android:textSize="24sp"
        android:textStyle="bold"
        tools:textAlignment="center"
        tools:textColor="@android:color/white" />

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top"
        android:layout_marginHorizontal="16dp"
        android:background="@android:color/background_light"
        android:entries="@array/date_arrays"
        android:prompt="@string/bill_date_prompt"
        android:spinnerMode="dialog"
        app:layout_anchor="@+id/listBillView"
        app:layout_anchorGravity="top|right" />

    <ProgressBar
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/progressBarBillList"
        android:layout_gravity="center" />


    <include
        layout="@layout/content_bill_list"
        app:layout_anchor="@+id/bill_dates"/>
</LinearLayout>

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

我没有评论弹出主题。

此外,您还需要在 .NoActionBar 中使用主题,因为要提供操作栏,并且在包含此布局的Activity上需要调用:

Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

您在寻找什么吗?