2015-09-18 16 views
16

Piszę prostą aplikację do gry z ContentProvider, mam db, ContentProvider, główne działanie, klasę, która przekazuje polecenia do ContentProvider za pomocą ContentResolver. Na gui chcę wyświetlić wszystkie elementy przechowywane w bazie danych. Stworzyłem ten projekt od podstaw i podczas tworzenia działania główny układ miał CoordinatorLayout, z AppBarLayout, i to jest w porządku, stworzyłem ListView i wszystko działa z wyjątkiem tego, że AppBarLayout nakłada się na ListView, poniżej pierwszego elementu widoku listy jest ukrywany przez AppBarLayout. enter image description hereAndroid AppBarLayout nakłada się na listę publiczną

Próbowałem użyć android:layout_below dla mojego ListView, ale to nie działa, jeśli mogę użyć android:layout_marginTop wtedy mój ListView jest pod AppBarLayout ale nie uważam tego rozwiązania nice.

Czy nie ma łatwego, prostego sposobu na umieszczenie ListView pod AppBarLayout?

poniżej swojego układu activity_main:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 
    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:background="@color/holo_light_background" 
    android:fitsSystemWindows="true" 
    tools:context=".MainActivity"> 

    <android.support.design.widget.AppBarLayout 
     android:id="@+id/bar" 
     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" 
      android:theme="@style/AppTheme.AppBarOverlay" 
      app:popupTheme="@style/AppTheme.PopupOverlay" /> 
    </android.support.design.widget.AppBarLayout> 


    <ListView 
     android:id="@+id/list" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/bar"/> 


    <android.support.design.widget.FloatingActionButton ...> 

    <android.support.design.widget.FloatingActionButton ...> 

</android.support.design.widget.CoordinatorLayout> 
+1

Nie wyświetlasz wystarczającej ilości pliku XML, udostępnij cały plik układu. – Booger

+3

Nie powinieneś mieć więcej niż 1 FAB !!! – Booger

+1

@Booger faktycznie jest to cały xml. Brakuje ostatniej linii, dodałem ją i nie podaję całej definicji floatingbuttom. Jeśli chodzi o użycie 2 przycisków pływających, to myślę, że masz rację, google poleca jeden pływający przycisk, ale czasami używają 2 pływających przycisków [https://www.google.com/design/spec/components/buttons-floating-action- button.html # buttons-floating-action-button-przejsci], nie jest to dla mnie jasne. –

Odpowiedz

34

Proste dodać

app:layout_behavior="@string/appbar_scrolling_view_behavior" 

do ListView

+1

masz rację, jeśli masz na myśli, że muszę dodać 'layout_behavior' do ListView;) –

+1

@OLeeCsobert Jeśli to działa, działa tylko na Lollipop i wyżej. Do tego momentu nie było zagnieżdżonego wsparcia przewijania, które służy do osiągnięcia pożądanego zachowania. Proponuję przenieść się do RecyclerView, ponieważ ma taką możliwość za pośrednictwem biblioteki wsparcia. –

+0

@Eugen Pechanec, dziękuję za komentarz, to jest właściwie pytanie, które sobie zadałem: czy powinniśmy całkowicie zrezygnować z ListView tylko z używanego RecyclerView? –

0

alternatywnym sposobem jest użycie RecyclerView zamiast ListView, to będzie działać na pewno ........

LUB

zastosowanie:

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) 
      { 
       listView.setNestedScrollingEnabled(true); 
      } 

Będzie to oczywiście tylko pracować na lizak.

Powiązane problemy