2015-08-29 17 views
10

FloatingActionButton ha due dimensioni standard (normale e mini). Ne ho bisogno un altro (più grande del normale).Come rendere la dimensione personalizzata di FloatingActionButton

app:fabSize parametro da xml diventato private int mSize; variabile nella classe FloatingActionButton. La dimensione reale sarà determinata da questa funzione:

final int getSizeDimension() { 
    switch(this.mSize) { 
    case 0: 
    default: 
     return this.getResources().getDimensionPixelSize(dimen.fab_size_normal); 
    case 1: 
     return this.getResources().getDimensionPixelSize(dimen.fab_size_mini); 
    } 
} 

Perché dichiarato come finale non posso estenderlo. Qualche idea? Posso essere in grado di ridefinire la risorsa dimen.fab_size_mini nella mia app?

+0

È definitivo in quanto segue la Direttiva materiale –

+0

Che cosa esattamente la linea guida proibisce l'estensione di getSizeDimension? Cosa intendi? – tse

+1

La libreria di progettazione segue le linee guida sui materiali ed è il motivo perché puoi utilizzare solo 2 dimensioni. Controlla http://www.google.com/design/spec/components/buttons-floating-action-button.html#buttons- floating-action-button-floating-action-button –

risposta

12

Perché non utilizzo FAB della dimensione mini, ho ridefinito questa dimensione.

dimens.xml:

<resources> 
    <dimen name="design_fab_size_mini">100dp</dimen> 
</resources> 

layout.xml (prima FAB sarà più grande di secondo):

<android.support.design.widget.FloatingActionButton 
     android:id="@+id/addPhoto" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="end|bottom" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     app:fabSize="mini" 
     android:layout_marginBottom="@dimen/fab_margin_bottom" 
     android:layout_marginRight="@dimen/fab_margin_right" 
     android:src="@drawable/ic_photo_camera_white_24dp" 

     /> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/addPicture" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="end|bottom" 
     android:layout_alignParentBottom="true" 
     android:layout_toLeftOf="@id/addPhoto" 
     android:layout_marginBottom="@dimen/fab_margin_bottom" 
     android:layout_marginRight="0dp" 
     android:src="@drawable/ic_photo_white_24dp" 
     /> 
+0

Il simile è 'design_fab_size_normal' quando fab è normale, non mini –

6

È possibile definire la vostra abitudine FloatingActionButton in questo modo

public class CustomSizeFloatingActionButton extends FloatingActionButton { 

    public CustomSizeFloatingActionButton(Context context) { 
     super(context); 
    } 

    public CustomSizeFloatingActionButton(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public CustomSizeFloatingActionButton(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
    } 

    @Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
     int width = getMeasuredWidth(); 
     int height = getMeasuredHeight(); 
     setMeasuredDimension((int) (width * 1.5f), (int) (height * 1.5f)); 
    } 

} 

invece di 1.5f puoi definire il tuo moltiplicatore.
In questo modo non è necessario ridefinire le risorse che potrebbero influire su altre parti dell'app.

Problemi correlati