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/