NestedScrollView大小不适合CollapsingToolbarLayout

时间:2017-03-21 17:40:14

标签: android android-layout

我想在我的应用中应用CollapsingToolbarLayout。

下面的XML工作正常。

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
                                    xmlns:ads="http://schemas.android.com/apk/res-auto"
                                    xmlns:app="http://schemas.android.com/apk/res-auto"
                                    xmlns:tools="http://schemas.android.com/tools"
                                    android:id="@+id/drawer_layout"
                                    android:layout_width="match_parent"
                                    android:layout_height="match_parent"
                                    tools:openDrawer="start">

<android.support.design.widget.CoordinatorLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:orientation="vertical">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fitsSystemWindows="true">

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

            <android.support.design.widget.TextInputLayout
                android:id="@+id/tilTitle"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="24dp"
                android:layout_marginStart="56dp"
                android:layout_marginTop="?attr/actionBarSize"
                android:background="?attr/colorPrimary"
                android:theme="@style/Toolbar"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

                <ViewSwitcher
                    android:id="@+id/switcherTitle"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">

                    <TextView
                        android:id="@+id/tvTitle"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:hint="@string/title"
                        android:textSize="36sp"/>

                    <EditText
                        android:id="@+id/etTitle"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:ems="10"
                        android:hint="@string/title"
                        android:inputType="textMultiLine"
                        android:textSize="36sp"/>
                </ViewSwitcher>
            </android.support.design.widget.TextInputLayout>

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="?attr/colorPrimary"
                android:theme="@style/Toolbar"
                app:layout_collapseMode="pin"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light">
            </android.support.v7.widget.Toolbar>
        </android.support.design.widget.CollapsingToolbarLayout>


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

    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <FrameLayout
            android:id="@+id/contentFrame"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
    </android.support.v4.widget.NestedScrollView>

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab_save_confirm_action_item"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="16dp"
        android:src="@drawable/ic_done_white_36dp"
        app:fabSize="normal"
        app:layout_anchor="@id/collapsingToolbar"
        app:layout_anchorGravity="bottom|right|end"/>

    <com.google.android.gms.ads.AdView
        android:id="@+id/adBannerView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        ads:adSize="BANNER"
        ads:adUnitId="ca-app-pub-5185146194441120/1301019297"/>
</android.support.design.widget.CoordinatorLayout>

但是有一个问题。

屏幕上的NestedScrollView。

它不适合其父高。

enter image description here

当我应用以下代码时,它会很有帮助。

android:layout_marginBottom="?attr/actionBarSize"

这意味着我应该使用&#34; actionBarHeight&#34;?

来控制

还有其他聪明的方法吗?

2 个答案:

答案 0 :(得分:0)

您需要在Activity onCreate方法中使用工具栏调用setSupportActionBar。

  function asyncFiles(filesData) {
     async.eachSeries(filesData.logFiles, function(logfile, done) {
         // read file
         readStream = fs.createReadStream('./logs/' + filesData.searchEnv + '/' + logfile.filename, 'utf8')
         readStream.pipe(split())
             .on('data', function(line) {
               var searchStr = [{"text":"4588769"},{"text":"request"}]
                 searchStr.forEach(function(text) {
                     if (line.toLowerCase().indexOf(text.toLowerCase()) != -1)
                         var messageDateInfo = line.split('|')[0].replace(/[\[\]']+/g, '');
                     messageDateInfo = new Date(messageDateInfo).getTime();
                     searchStartDate = new Date(searchStartDate).getTime();
                     searchEndDate = new Date(searchEndDate).getTime();
                     if (messageDateInfo - searchStartDate > 0 && searchEndDate - messageDateInfo > 0) {
                         results.push({
                             filename: logfile.filename,
                             value: line
                         });
                     }
                 });
             });
         done();
     }, function(err) {
         if (err) {
             console.log('error', err);
         }
         readStream.on('end', function() {
             callback(results);
         });
         results = [];
     });
 }

答案 1 :(得分:0)

尝试在CollapsingToolbarLayout中设置minHeight属性。

类似的问题和答案here