2015-10-01 10 views
10

Quando si utilizza il nuovo FloatingActionButton, la dimensione è determinata da app:fabSize="normal". Come posso impostare ciò che in dp corrisponde alla dimensione di riferimento di "normal"?Android: come modificare le dimensioni dell'app: fabSize = "normale" per il pulsante di azione mobile

Ho cercato di creare values/attrs.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <declare-styleable name="app"> 
     <attr name="fabSize"> 
      <enum name="mini" value="50dp" /> 
      <enum name="normal" value="100dp" /> 
     </attr> 
    </declare-styleable> 
</resources> 

ma ho l'errore di

"normal" in attribute "fabSize" is not a valid integer 
+1

Questi valori non sono modificabili. –

+0

@EugenPechanec In generale - sai che il buon collegamento spiega tutti i problemi con l'app: e da dove il mondo "normale" ha significato? Grazie, – michael

+0

"app" è di solito un namespace per ogni attributo che non è definito dalla piattaforma Android (che ha il prefisso "android"). ||| Secondo FloatingActionButton source fabSize è 0 per la dimensione normale o 1 per la mini dimensione. Quindi non puoi ignorarlo in questo modo. Quanto sono grandi qui sono meglio descritti qui: https://www.google.com/design/spec/components/buttons-floating-action-button.html –

risposta

23

Ci sono due diverse dimensioni di FAB disponibili: normal o mini

  1. Normal (56dp) - Questa taglia dovrebbe essere u sed nella maggior parte delle situazioni.

  2. Mini (40dp) - Da utilizzare solo in caso di necessità di continuità visiva con altri componenti visualizzati sullo schermo.

+3

C'è un modo? per cambiare le impostazioni predefinite? In generale, come modificare l'app: attributi? – michael

+0

Dovrebbe essere utilizzato solo quando c'è bisogno di continuità visiva con altri componenti visualizzati sullo schermo -> Cosa significa esattamente? C'è qualche esempio? – HendraWD

12

io so che non è raccomandato, ma per coloro che assolutamente bisogno di cambiare le dimensioni predefinite, sono stato in grado di farlo avvolgendo il FloatingActionButton in un LinearLayout.

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center" 
    android:layout_centerInParent="true" 
    android:orientation="horizontal" > 

    <android.support.design.widget.FloatingActionButton 
     android:layout_width="@dimen/custom_fab_size" 
     android:layout_height="@dimen/custom_fab_size" 
     app:fabSize="normal" 
     android:clickable="true" 
     android:src="@drawable/ic_mic_white_24dp" 
     android:scaleType="center"/> 
</LinearLayout> 
+0

Grazie per la risposta! – michael

27

È possibile ignorare le dimensioni normali e mini aggiungendo quanto segue a values/dimens.xml:

<!-- Overriding sizes of the FAB --> 
    <dimen name="design_fab_size_normal">90dp</dimen> 
    <dimen name="design_fab_size_mini">30dp</dimen> 

La cosa più difficile sarebbe se avete bisogno di più di 2 taglie fab, in questo caso credo che si ha bisogno per creare una vista personalizzata che estende il fab.

+2

Dovresti anche aggiungere 'tools: override =" true "' poiché questi attributi sono contrassegnati come privati ​​ –

+0

Questi sono i valori predefiniti: 56dp 40dp Mannaz

1
<dimen name="design_fab_size_normal">90dp</dimen> 
<dimen name="design_fab_size_mini">30dp</dimen> 
Set this in dimen file. 
+1

Qual è il valore aggiunto rispetto alla [risposta più votata] (https://stackoverflow.com/a/40242736/101361) ? – laalto