2

我想在ListView下添加一個FloatingActionButton(以便該按鈕始終是ListView的最後一項)。 我找到了一個方法,可以做到這一點叫做addFooterView。 當我嘗試添加FAB不過,我得到一個錯誤:將FloatingActionButton作爲FooterView添加到ListView

android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams 

好像我FAB的PARAMS不能被澆鑄成RelativeLayout的參數。 我該如何解決這個問題?或者有另一種方法來達到這種效果嗎?

我的(相關)XML:

<RelativeLayout 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:fitsSystemWindows="true" 
tools:context="com.MainActivity"> 

<android.support.design.widget.AppBarLayout 
    android:id="@+id/toolbarContainer" 
    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" 
     app:popupTheme="@style/AppTheme.PopupOverlay" /> 

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


<ListView 
    android:id="@+id/container" 
    android:layout_below="@id/toolbarContainer" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
</ListView> 


<android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab" 
    android:layout_below="@id/container" 
    android:layout_centerHorizontal="true" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_margin="@dimen/fab_margin" 
    android:src="@android:drawable/ic_menu_add" /> 
我的代碼的

(相關)部分:

ListView container = (ListView)findViewById(R.id.container); 
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 

container.addFooterView(fab); 
+1

FAB用於在屏幕的右下角總是展示。大多數圖書館都會自動放置。請問爲什麼你需要重新調整到ListView的最後一項? – zIronManBox

+0

zIronManBox他想要保存空間,直到最後一項顯示我猜。 – pratz9999

回答

1

您不能添加一個視圖已經具有一個頁腳視圖家長。 您應該在代碼中創建FloatingActionButton,然後將其添加爲頁腳視圖。

但正如其他人所說,用UX來說,在ListView之上展示它會更好。

1

你可以在CoordinatorLayout上使用它,它有這個效果。

由於您使用AppbarLayout是簡單地CoordinatorLayout使用:

實現:

<CoordinatorLayout> 
    <AppbarLayout/> 
    <scrollableView/> 
    <FloatingActionButton/> 
</CoordinatorLayout> 

例子:

<android.support.design.widget.FloatingActionButton 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:layout_margin="@dimen/activity_horizontal_margin" 
     android:src="@drawable/ic_comment_24dp" 
     app:layout_anchor="@id/main.appbar" 
     app:layout_anchorGravity="bottom|right|end" 
     /> 

這是標準的方式(MaterialDesign)做到這一點。

此外,您還可以檢查了這一點:http://saulmm.github.io/mastering-coordinator/