1

1 我正在尝试将 CollapsingToolbarLayout 与 ScrollView 一起使用,但我不知道为什么它不起作用。我试试这个:

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

我的嵌套滚动视图,其行为设置为 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 被滚动,但折叠工具栏被固定!

4

2 回答 2

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

     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>
    

    现在您需要在ToolbarActivity 布局文件中添加一个。使用 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" 到 Toolbar 的父布局中,以确保正确计算活动的高度。

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

setSupportActionBar(Toolbar)接下来,在您的 Activity 或 Fragment 中,通过调用以下方法将 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>
    
于 2016-10-16T17:17:57.667 回答
0

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

于 2016-10-16T17:58:36.553 回答