繁体   English   中英

滚动时,CollapsingToolbarLayout未折叠

[英]CollapsingToolbarLayout not collapsed when scrolled

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,它的bhavior设置为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已滚动但折叠工具栏已固定!

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

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

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

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

    现在,您需要将Toolbar添加到Activity布局文件中。 使用工具栏小部件的最大优势之一是您可以将视图放置在布局中的任何位置。 下面我们将工具栏放在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> 

我在工具栏XML文件中找到了答案,layout_height设置为“wrap_content”。 我把它设置为“?attr / actionBarSize”,并且CollapsingToolbarLayout很好地滚动

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM