4

我一直在嘗試在我的android應用程序中使用協調器佈局。我在協調器佈局中有應用欄佈局和嵌套滾動視圖。在我的嵌套滾動視圖中,我有一個帶有animateLayoutChanges的線性佈局爲true。Android:animateLayoutChanges無法正常使用CoordinatorLayout

我的問題是,如果將項目可視性設置爲可見,線性佈局高度的高度會增加,則線性佈局會進入應用程序佈局下。只有在單擊屏幕或滾動後,纔會發生正確的滾動效果。

我創建了一個簡單的應用程序來顯示該問題。以下是佈局。

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 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:animateLayoutChanges="true" 
    tools:context="testapp.test.MainActivity"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/appBar" 
     android:animateLayoutChanges="true" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      android:animateLayoutChanges="true" 
      app:layout_scrollFlags="scroll|enterAlways|snap" 
      app:popupTheme="@style/AppTheme.PopupOverlay"> 

     </android.support.v7.widget.Toolbar> 

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

    <android.support.v4.widget.NestedScrollView 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:animateLayoutChanges="true"> 

     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Show" 
      android:id="@+id/test_Button"/> 
     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Hide" 
      android:id="@+id/test_Button2"/> 
     <TextView 
      android:id="@+id/test_tv" 
      android:layout_width="match_parent" 
      android:layout_height="300dp" 
      android:visibility="gone" 
      android:background="@color/colorAccent"/> 
     </LinearLayout> 
    </android.support.v4.widget.NestedScrollView> 

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

在這點擊顯示按鈕我使Textview可見。請看照片瞭解我的問題。

圖1-初始狀態。

圖2-這是問題所在。我點擊了Show。現在線性佈局已移動到應用欄佈局下,原因在於動畫布局更改的動畫效果。如您所見,顯示按鈕已移至應用程序欄下方。

Pic 3-現在當我觸摸屏幕或滾動時,滾動變得適當。

請幫忙。我一直在努力解決這個問題。謝謝。

Initial State.

Here is the problem. I have clicked Show. Now the Linear layout has moved under App Bar Layout due to animation. Now when I touch screen or scroll, the scrolling becomes proper.

回答

5

我正經歷着同樣的問題:包含設置爲true animateLayoutChanges一個的LinearLayout NestedScrollView是造成滾動問題與內容。在我的情況下,內容在appBarLayout下滑動。

此錯誤在此記錄爲issue 180504。看來這現在是固定的支持庫23.2.0意思是更新到這應該是關鍵:

ext { 
    supportLibraryVersion = "23.2.0" 
} 

dependencies { 
    ... 

    // this is the primary dependency for coordinator layout 
    // but, of course, update all that depend on the support library 
    // note: the design library depends on the Support v4 and AppCompat Support Libraries 
    //  those will be included automatically when you add the Design library dependency 
    compile "com.android.support:design:$supportLibraryVersion" 

    ... 
} 
+0

謝謝。有用。 –

+0

它像一個魅力。謝謝 – tauri