2015-10-01 3 views
10

Bei Verwendung des neuen FloatingActionButton wird die Größe durch app:fabSize="normal" bestimmt. Wie kann ich einstellen, was in dp die Größe ist, auf die "normal" verweist?Android: So ändern Sie die Größe der App: fabSize = "normal" für Floating Action Button

Ich versuchte values/attrs.xml zu erstellen:

<?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> 

Aber ich habe den Fehler

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

Diese Werte sind nicht änderbar. –

+0

@EugenPechanec Allgemein - weißt du einen guten Link erklärt alle Probleme mit der App: und woher die Welt "normal" hat ihre Bedeutung? Danke, – michael

+0

"app" ist normalerweise ein Namespace für jedes Attribut, das nicht von der android-Plattform definiert ist (mit dem Präfix "android"). ||| Laut FloatingActionButton ist fabSize entweder 0 für die normale Größe oder 1 für die Mini-Größe. Sie können es also nicht auf diese Weise überschreiben.Wie groß diese wirklich sind, können Sie hier am besten beschreiben: https://www.google.com/design/spec/components/buttons-floating-action-button.html –

Antwort

23

Es gibt zwei verschiedene Größen von FAB zur Verfügung: normal oder mini

  1. Normal (56dp) - Diese Größe sollte u sed in den meisten Situationen.

  2. Mini (40dp) - Sollte nur verwendet werden, wenn eine visuelle Kontinuität mit anderen auf dem Bildschirm angezeigten Komponenten erforderlich ist.

+3

Gibt es einen Weg Um diese Voreinstellungen zu ändern? Im Allgemeinen - wie man die App ändert: Attribute? – michael

+0

Sollte nur verwendet werden, wenn eine visuelle Kontinuität mit anderen Komponenten auf dem Bildschirm angezeigt wird -> Was bedeutet das genau? Gibt es ein Beispiel? – HendraWD

12

ich es weiß nicht empfohlen, aber für diejenigen, die unbedingt brauchen die Standardgrößen zu ändern, ich war in der Lage, es zu tun, indem Sie die FloatingActionButton in einem LinearLayout Verpackung.

<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

Danke für die Antwort! – michael

27

Sie können die normalen und Minigrößen überschreiben die durch Zugabe von folgenden values/dimens.xml:

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

Die heikle Sache wäre, wenn Sie mehr als 2 fab Größen benötigen, in diesem Fall ich Sie erraten müssen um eine benutzerdefinierte Ansicht zu erstellen, die die Fab erweitert.

+2

Sie sollten auch 'tools: override =" true "' hinzufügen, da diese Attribute als privat gekennzeichnet sind. –

+0

Dies sind die Standardwerte: 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

Was ist der Mehrwert über die [höchsten gestimmt Antwort] (https://stackoverflow.com/a/40242736/101361) ? – laalto