0

我有一个带有列表视图的 AppCompatActivity,其布局如下

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    android:id="@+id/main_content"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/user_title"
            android:background="@drawable/user_title_color"
            android:textColor="@android:color/white"
            android:textAppearance="@android:style/TextAppearance.Large"/>
    <ListView android:id="@+id/joggings_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:divider="#b5b5b5"
        android:dividerHeight="1dp"
        android:drawSelectorOnTop="false"/>
        <LinearLayout
            android:id="@+id/empty_list"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center_vertical|center">
            <TextView
                android:text="No joggings yet"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
            <Button
                android:id="@+id/empty_add_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Add"/>
        </LinearLayout>
    <android.support.design.widget.FloatingActionButton
        android:id="@+id/add_jogging"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/bottom_navigation"
        android:layout_alignParentRight="true"
        android:layout_gravity="end|bottom"
        android:layout_marginBottom="16dp"
        android:layout_marginRight="16dp"
        android:clickable="true"
        android:src="@drawable/ic_plus"
        app:borderWidth="0dp" />
        <android.support.design.widget.BottomNavigationView
            android:id="@+id/bottom_navigation"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:background="@color/colorPrimaryDark"
            android:foregroundTint="@color/colorAccent"
            app:itemTextColor="@color/bottom_navigation_color"
            app:itemIconTint="@color/bottom_navigation_color"
            app:menu="@menu/bottom_navigation_main" />
</LinearLayout>
</android.support.design.widget.CoordinatorLayout>

在我的代码中,我有 mListView.setEmptyView(findViewById(R.id.empty_list));

为了在列表为空时显示一条消息和一个“添加”按钮。我的问题是,当列表为空时,BottomNavigationView 被隐藏并且用户无法导航到另一个活动。
我能想到的一种可能的解决方案是在空布局中添加另一个具有相同项目的 BottomNavigationView,但这看起来很难看。

还有其他解决方案吗?

4

3 回答 3

1

ListView如果您希望它们占据相同的空间,您的和它的空视图应该具有相同的布局属性。在您的情况下,它们都应该是

android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"

另外,你应该把它放在FloatingActionButton 外面LinearLayout否则会影响ListView/empty 视图的大小。它也应该是 的直接子代CoordinatorLayout,否则它的默认行为不起作用。

于 2017-01-23T14:55:46.917 回答
1

将 empty_list 高度设置为 wrap_content

于 2017-01-23T14:36:34.707 回答
0

以下布局工作正常。基本思想是coordinateLayout 包含listview 和FloatingActionButton 以及空视图。CoordinateLayout 包含在外部垂直 LinearLayout 中,其中还包含标题 textview 和 BottomNavigationView

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/user_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/user_title_color"
        android:textAppearance="@android:style/TextAppearance.Large"
        android:textColor="@android:color/white" />

    <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/main_content"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <ListView
            android:id="@+id/joggings_list"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:divider="#b5b5b5"
            android:dividerHeight="1dp"
            android:drawSelectorOnTop="false" />


        <android.support.design.widget.FloatingActionButton
            android:id="@+id/add_jogging"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/bottom_navigation"
            android:layout_alignParentRight="true"
            android:layout_gravity="end|bottom"
            android:layout_marginBottom="16dp"
            android:layout_marginRight="16dp"
            android:clickable="true"
            android:src="@drawable/ic_plus"
            app:borderWidth="0dp"
            app:layout_anchor="@id/joggings_list"
            app:layout_anchorGravity="bottom|right|end" />


        <LinearLayout
            android:id="@+id/empty_list"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center_vertical|center"
            android:orientation="vertical">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="No joggings yet" />

            <Button
                android:id="@+id/empty_add_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Add" />
        </LinearLayout>
    </android.support.design.widget.CoordinatorLayout>

    <android.support.design.widget.BottomNavigationView

        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:background="@color/colorPrimaryDark"
        android:foregroundTint="@color/colorAccent"
        app:itemIconTint="@color/bottom_navigation_color"
        app:itemTextColor="@color/bottom_navigation_color"
        app:menu="@menu/bottom_navigation_main" />
</LinearLayout>
于 2017-02-01T11:16:49.850 回答