滚动时,CollapsingToolbarLayout未折叠

时间:2016-10-16 16:31:48

标签: android scroll android-collapsingtoolbarlayout android-nestedscrollview

1 我试图使用ScrollView使用CollapsingToolbarLayout,但我不知道为什么它不起作用。我试试这个:

<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.design.widget.AppBarLayout
    android:id="@+id/appBarLayout"
    android:layout_width="match_parent"
    android:layout_height="256dp">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsingToolbar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">

        <include
            android:id="@+id/toolbar"
            layout="@layout/toolbar"
            app:layout_scrollFlags="scroll|enterAlways"></include>

        <com.github.mikephil.charting.charts.LineChart
            android:id="@+id/graph"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@id/toolbar"
            android:background="@color/white"></com.github.mikephil.charting.charts.LineChart>
    </android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>

<include layout="@layout/nested_scroll_view" />

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

我的嵌套scrollview,其行为设置为appbar_scrolling_view_behavior

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView 
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingTop="10dp">
<include layout="@layout/scroll_view_aba"/>
<include layout="@layout/scroll_view_aci"/>
<include layout="@layout/scroll_view_aci_reduced"/>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>

我的nestedScrollView已滚动但折叠工具栏已固定!

2 个答案:

答案 0 :(得分:0)

  • 确保使用工具栏作为操作栏 要将工具栏用作ActionBar,请首先确保将AppCompat-v7支持库添加到应用程序build.gradle(模块:应用程序)文件中:

     dependencies {
         ...
         compile 'com.android.support:appcompat-v7:23.1.0'
    }
    

    其次,让我们禁用主题提供的ActionBar。最简单的方法是让您的主题从Theme.AppCompat.NoActionBar文件中的res/styles.xml(或轻量级变体)延伸:

    <resources>
       <!-- Base application theme. -->
       <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
       </style>
     </resources>
    

    现在您需要在Activity布局文件中添加Toolbar。使用工具栏小部件的最大优势之一是您可以将视图放置在布局中的任何位置。下面我们将工具栏放在LinearLayout的顶部,就像标准的ActionBar一样:

    <android.support.v7.widget.Toolbar
      android:id="@+id/toolbar"
      android:minHeight="?attr/actionBarSize"  
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      app:titleTextColor="@android:color/white"
      android:background="?attr/colorPrimary">
    </android.support.v7.widget.Toolbar>
    
    <!-- Layout for content is here. This can be a RelativeLayout  -->
    
    </LinearLayout>
    

    注意:您需要将android:fitsSystemWindows="true"添加到工具栏的父级布局,以确保正确计算活动的高度。

由于工具栏只是一个ViewGroup,可以像其他任何视图一样设置样式并定位。请注意,这意味着如果您在RelativeLayout中,则需要确保所有其他视图明确位于工具栏下方。工具栏未作为视图进行任何特殊处理。

接下来,在您的Activity或Fragment中,通过调用setSupportActionBar(Toolbar)方法将工具栏设置为ActionBar:

注意:使用支持库时,请确保您要导入android.support.v7.widget.Toolbar而不是android.widget.Toolbar.

import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;

public class MyActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);

        // Find the toolbar view inside the activity layout
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        // Sets the Toolbar to act as the ActionBar for this Activity window.
        // Make sure the toolbar exists in the activity and is not null
        setSupportActionBar(toolbar);
    }

    // Menu icons are inflated just as they were with actionbar
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }
}

接下来,我们需要确保我们在菜单资源文件中列出了操作项,例如res/menu/menu_main.xml,它在onCreateOptionsMenu上面被夸大了:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/miCompose"
        android:icon="@drawable/ic_compose"
        app:showAsAction="ifRoom"
        android:title="Compose">
    </item>
    <item
        android:id="@+id/miProfile"
        android:icon="@drawable/ic_profile"
        app:showAsAction="ifRoom|withText"
        android:title="Profile">
    </item>
</menu>

从现在开始,所有菜单项都显示在工具栏中,通过标准选项菜单回调填充。

  • 还要确保CoordinatorLayout是主要的布局容器。

        <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:fitsSystemWindows="true">
    
      <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
    
     </android.support.design.widget.CoordinatorLayout>
    

答案 1 :(得分:0)

我找到了答案 在我的工具栏XML文件中,layout_height设置为&#34; wrap_content&#34;。我把它设置为&#34;?attr / actionBarSize&#34;和CollapsingToolbarLayout很好地滚动