8

Właśnie zacząłem korzystać z nowej biblioteki Deisgn od Google: „com.android.support:design:22.2.0”Czy to błąd w bibliotece projektowania wsparcia Androida?

używam FloatingActionButton i mam mały problem między Androida poniżej 5,0 i powyżej 5,0. Watch zrzut ekranu:

Android 4.4:

Android 4.4

Android 5.0: Android 5.0

Jak widać, na Androidzie 4.4, istnieje margines wokół FAB. Myślę, że to służy do wyświetlania cienia. Ale TO JEST OVERSIZED! Czy to błąd (lub zapomnij o Google), czy zwyczajne zachowanie?

xml z widoku hosting on FAB:

<RelativeLayout 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" 
tools:context="fr.freemo.freemo.activities.ListFreemoCityActivity"> 

<include 
    android:id="@+id/toolbar" 
    layout="@layout/view_toolbar" /> 


<FrameLayout 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_below="@+id/toolbar"> 

</FrameLayout> 


<ProgressBar 
    android:id="@+id/progressBar" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" /> 

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab_add" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentRight="true" 
    android:layout_marginBottom="@dimen/margin_fab" 
    android:layout_marginRight="@dimen/margin_fab" 
    android:elevation="@dimen/fab_elevation_lollipop" 
    android:src="@drawable/ic_action_new" 
    app:backgroundTint="@color/color_app" 
    app:fab_type="normal" /> 


<android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab_display" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/fab_add" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentRight="true" 
    android:layout_marginBottom="@dimen/margin_fab" 
    android:layout_marginRight="@dimen/margin_fab" 
    android:elevation="@dimen/fab_elevation_lollipop" 
    android:src="@drawable/ic_map_white" 
    android:tint="@color/color_app" 
    app:backgroundTint="@color/white" 
    app:fab_type="normal" /> 

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab_display_list" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/fab_display" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentRight="true" 
    android:layout_marginBottom="@dimen/margin_fab" 
    android:layout_marginRight="@dimen/margin_fab" 
    android:elevation="@dimen/fab_elevation_lollipop" 
    android:src="@drawable/ic_action_list" 
    android:tint="@color/color_app" 
    android:visibility="invisible" 
    app:backgroundTint="@color/white" 
    app:fab_type="normal" /> 

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab_display_grid" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/fab_display_list" 
    android:layout_alignParentRight="true" 
    android:layout_marginBottom="@dimen/margin_fab" 
    android:layout_marginRight="@dimen/margin_fab" 
    android:elevation="@dimen/fab_elevation_lollipop" 
    android:src="@drawable/ic_view_module_white" 
    android:tint="@color/color_app" 
    android:visibility="invisible" 
    app:backgroundTint="@color/white" 
    app:fab_type="normal" /> 
    </RelativeLayout> 
+0

Czy możesz pokazać układ XML dla tego widoku mapy? – Hector

+0

@Hector tutaj to jest – Cocorico

+0

Mam nadzieję, że to pomaga http: // stackoverflow.com/questions/30613921/how-to-remove-floatingactionbuttons-surrounding-shadow –

Odpowiedz

0

Jest to błąd interfejsu API 21. Strzałkę można wyświetlić, usuwając margines. Oto sposób Można go rozwiązać i po testach na różnych urządzeniach wydaje się działać:

https://stackoverflow.com/a/31337162/3173384

Zmieniano

Bug został już naprawiony. Po prostu zaktualizuj wszystkie biblioteki obsługi do wersji 22.2.1

compile 'com.android.support:design:22.2.1' 
compile 'com.android.support:appcompat-v7:22.2.1' 
compile 'com.android.support:cardview-v7:22.2.1' 
compile 'com.android.support:recyclerview-v7:22.2.1' 
0

Zostało to określone jako nie będące faktycznym błędem. Zamiast tego jest to oczekiwane zachowanie.

Cytując google dev odpowiedź:

To nie jest błąd i działa zgodnie z przeznaczeniem, w tym sensie, że jest to coś, co jest całkowicie nie do uniknięcia. W ramach CoordinatorLayout mamy pewną kontrolę i możemy wykryć pewne sytuacje (krawędzie), w których może zrekompensować FAB. To jest hack.

Jeśli ci się nie podoba, ustaw poziom elewacji na 0dp i skończ go.

Jak ktoś inny stwierdził tutaj, powinniśmy zdefiniować

xmlns:app="http://schemas.android.com/apk/res-auto" 
app:borderWidth="0dp" 
app:elevation="0dp" 

lub, jeszcze lepiej, zdefiniować swoją elewację w dimens.xml na podstawie wersji API, na którym pracujemy. Najczęściej spotykanym przypadkiem jest:

<!-- dimens.xml(v21) --> 
<dimen name="custom_fab_elevation">@dimen/fab_elevation</dimen> 

<!-- dimens.xml(lower) --> 
<dimen name="custom_fab_elevation">0dp</dimen> 
Powiązane problemy