我有一个带有listview的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));
为了显示消息并添加&#34;添加&#34;列表为空时按钮。我的问题是当列表为空时,BottomNavigationView被隐藏,用户无法导航到另一个活动 我能想到的一个可能的解决方案是在空布局中添加另一个具有相同项目的BottomNavigationView,但这看起来很难看。
还有其他解决方案吗?
答案 0 :(得分:1)
将empty_list height设置为wrap_content
答案 1 :(得分:1)
如果您希望它们占据相同的空间,则ListView
及其空视图应具有相同的布局属性。在你的情况下,他们都应该
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
此外,您应该将FloatingActionButton
放在LinearLayout
的之外,否则会影响ListView
/空视图的大小。它也是CoordinatorLayout
的直接子项,否则其默认行为不起作用。
答案 2 :(得分:0)
以下布局运行正常。基本思想是coordinateLayout包含listview和FloatingActionButton以及空视图。 CoordinateLayout包含在一个外部垂直LinearLayout中,它还包含头文本视图和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>