2014-06-05 12 views
7

Mam ListView w działalności z actionbar jak ten:fitsSystemWindows i zaokrąglona na KitKat

<LinearLayout 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    tools:context=".LauncherActivity" 

    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
     <ListView 
      android:id="@+id/lvcalendar" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:clipToPadding="false" 
      android:fitsSystemWindows="true" 


      android:dividerHeight="10dp" 
      android:paddingTop="10dp" 
      android:paddingBottom="10dp" 
      android:divider="#00ffffff" 

      android:scrollbarThumbVertical="@drawable/scrollbarstyle" 
      android:layout_gravity="top" 
      android:listSelector="@android:color/transparent" 
      /> 
</LinearLayout> 

Tematem aktywność Posiada:

<item name="android:windowTranslucentStatus">true</item> 
<item name="android:windowTranslucentNavigation">true</item> 

Pod urządzeń KitKat, zachowanie jest to, co ja chcesz: przedmioty mają wyściółkę 10dp na dole i na górze. Na urządzeniach KitKat wyściółka Top i paddingBottom wydają się nie mieć żadnego skutku, ponieważ element ListView nie ma dopełnienia 10dp na górze i na dole.

Myślę, że problem tkwi gdzieś w android:fitsSystemWindows, ponieważ ten atrybut wydaje się ustawiać konieczne wypełnienie widoku z powodu półprzezroczystego dekoru i powoduje zignorowanie atrybutów android:padding*.

Moje pytanie: jest tam tak więc mogę mieć zestaw android:fitsSystemWindows do true i jeszcze dodać dodatkową wyściółkę na widoku?

+0

proszę sprawdzić odpowiedź jako zaakceptowana! , Co jest nie tak ? – Mojtabye

+0

Zachowanie, którego chcę, nie jest tym, co powiedział @Spirit. – Noeljunior

+0

znalazłeś już rozwiązanie? dostałem ten sam problem – Sheychan

Odpowiedz

14

Należy dodać ten atrybut do widzenia dominującej:

<LinearLayout 
xmlns:tools="http://schemas.android.com/tools" 
xmlns:android="http://schemas.android.com/apk/res/android" 
tools:context=".LauncherActivity" 
android:fitsSystemWindows="true" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 
+3

Jeśli dodasz to do działania nadrzędnego, widok listy nie wypełni paska nawigacji. Nadal chcę mieć widok listy za półprzezroczystym paskiem nawigacyjnym, ale chcę mieć dodatkowe dopełnienie plus dopełnienie pasków systemowych. To może nie być możliwe, nie wiem. Jeśli chcesz uzyskać więcej informacji lub wygaszacze ekranu, po prostu powiedz. Dzięki – Noeljunior

1

Można tworzyć własne klasy, która rozciąga ListView i zastąpić fitSystemWindows() w tej klasie, w celu dodania wypustki do istniejącego wyściółką (domyślna implementacja zastępuje dopełnienie wstawkami). Wtedy nie musisz podawać atrybutu android:fitsSystemWindows w układzie XML, ponieważ twoja nowa implementacja będzie zawsze wywoływana.

+1

Wydaje się, że tego właśnie potrzebuję. Spróbuję jak najszybciej, a powiem wyniki i rozwiązanie. Dzięki! – Noeljunior

0

Odpowiedź brzmi nie. Jeśli ustawisz android: fitsSystemWindows jako true, nadpisuje wypełnienie tego widoku.

Możesz osiągnąć pożądane zachowanie, mając dwa widoki zagnieżdżone, w których widok nadrzędny ma android: fitsSystemWindows jako true, a inne zawierają dopełnienie.

-1

Podczas korzystania:

fitsSystemWindows=true 

do układu, wyściółka zostanie zresetowany do wypustkami. Do rozwiązania tego domyślnego zachowania można użyć wartości FitsSystemWindowsFrameLayout.

+0

Link do potencjalnego rozwiązania jest zawsze mile widziany, ale proszę [dodaj kontekst wokół linku] (http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really -good-answers/8259 # 8259), więc Twoi koledzy użytkownicy będą mieli pojęcie, co to jest i dlaczego tam jest. Zawsze podawaj najważniejszą część ważnego linku, na wypadek, gdyby strona docelowa była nieosiągalna lub stała w trybie offline.Weź pod uwagę, że bycie * ledwie większym niż link do zewnętrznej strony * jest możliwym powodem [Dlaczego i jak niektóre odpowiedzi zostały usunięte?] (Http://stackoverflow.com/help/deleted-answers). –

Powiązane problemy