8

ho appena iniziato ad utilizzare la nuova libreria deisgn da Google: 'com.android.support:design:22.2.0'Si tratta di un bug nella libreria di progettazione del supporto Android?

uso il FloatingActionButton e ho un piccolo problema tra Android inferiore a 5,0 e oltre 5.0. Guarda lo screenshot:

Android 4.4:

Android 4.4

Android 5.0: Android 5.0

Come si può vedere, su Android 4.4, v'è un margine intorno al FAB. Penso che questo sia per mostrare l'ombra. Ma è OVERSIZED! Quindi è un bug (o un dimenticarsi di Google) o semplicemente il comportamento normale?

L'XML della vista di hosting ha 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

puoi mostrare il layout XML per questa visualizzazione mappa? – Hector

+0

@Hector qui è – Cocorico

+0

Spero che questo aiuti http: // StackOverflow.it/questions/30613921/how-to-remove-floatingactionbuttons-surrounding-shadow –

risposta

0

È un bug per API 21. È possibile rendere visibile la freccia rimuovendo un margine. Ecco il modo in cui è possibile risolverlo e dopo la prova su diversi dispositivi sembra funzionare:

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

A cura

bug è già stato risolto. Basta aggiornare tutte le librerie di supporto a v 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

Questo è stato specificato per non essere un bug reale. Invece, questo è il comportamento previsto.

Citando un google dev risposta:

Questo non è un bug e sta lavorando come previsto, nel senso che si tratta di qualcosa che che è del tutto inevitabile. All'interno di un CoordinatorLayout abbiamo un certo controllo e possiamo rilevare determinate situazioni (bordi) in cui può compensare il FAB. Questo è un hack però.

Se non ti piace, imposta l'elevazione su 0 dpi e fallo con esso.

Come qualcuno detto qui, dovremmo definire

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

o, meglio ancora, definire la vostra elevazione dimens.xml in base alla versione di API si sta lavorando. Il caso più comune sarebbe:

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

<!-- dimens.xml(lower) --> 
<dimen name="custom_fab_elevation">0dp</dimen> 
Problemi correlati