2017-01-23 103 views
0

我有一個AppCompatActivity與下面EmptyView的ListView的隱藏BottomNavigationView

<?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,但它看起來很醜。

任何其他解決方案?

+0

似乎是一個佈局順序問題,你的BottomNavigationView從屏幕上被拉斷,所以一個可能的解決方案是使用一個相對佈局作爲協調員的直接兄弟姐妹,確保所有觀點都適合屏幕。 –

回答

1

設置EMPTY_LIST高度WRAP_CONTENT

+0

這工作,但空列表的文本框和按鈕顯示在屏幕的頂部,bottomNavigationView顯示在它們的正下方。我想垂直居中空白布局並將bottomNavigationView顯示在屏幕底部 –

+0

android:layout_gravity =「center」添加 – ChaitanyaAtkuri

1

ListView,它是空的觀點應該有相同的佈局屬性,如果你希望它們佔據相同的空間。在你的情況,他們都應該是

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

此外,你應該把FloatingActionButtonLinearLayout,否則會影響你的ListView /空視圖的大小。它也意味着是CoordinatorLayout的直接子女,否則其默認行爲不起作用。

+0

將FloatingActionButton作爲CoordinatorLayout的直接子對象將FloatingActionButton的一部分隱藏在BottomNavigationView下 –

+0

檢查它們的高程。此外,我建議移動FAB或完全擺脫它,因爲如果您同時擁有BottomNavigationView和BottomNavigationView,則屏幕底部會變得混亂。 – Karakuri

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>