【问题标题】:Adding a FloatingActionButton as a FooterView to a ListView将 FloatingActionButton 作为 FooterView 添加到 ListView
【发布时间】:2016-04-26 08:18:12
【问题描述】:

我想在 ListView 下方添加一个 FloatingActionButton(这样按钮始终是 ListView 的最后一项)。 我找到了一种方法,它可以做到这一点,称为 addFooterView。 但是,当我尝试添加 FAB 时,出现错误:

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

【问题讨论】:

  • FAB 用于展示总是在屏幕的右下角。大多数图书馆都会自动放置。请问为什么还要重新对齐到ListView的最后一项?
  • zIronManBox 他想节省空间,直到显示最后一个项目。

标签: android listview android-design-library floating-action-button


【解决方案1】:

您不能将视图添加为已经有父视图的页脚视图。 您应该在代码中创建FloatingActionButton,然后将其添加为页脚视图。

但正如其他人所说,在 UX 方面,最好将其显示在 ListView 之上。

【讨论】:

    【解决方案2】:

    你可以在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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多