2015-08-29 8 views
10

FloatingActionButton के कस्टम आकार बनाने के लिए दो आकारों (सामान्य और मिनी) है। मुझे एक और चाहिए (सामान्य से बड़ा)।डिफ़ॉल्ट रूप से FloatingActionButton

app:fabSize एक्सएमएल से पैरामीटर private int mSize;FloatingActionButton कक्षा में परिवर्तनीय बन गया। वास्तविक आकार इस समारोह द्वारा निर्धारित किया जाएगा:

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); 
    } 
} 

क्योंकि यह अंतिम के रूप में घोषित किया गया है, मैं इसे विस्तारित नहीं कर सकता। कोई विचार? क्या मैं अपने ऐप में dimen.fab_size_mini संसाधन को फिर से परिभाषित कर सकता हूं?

+0

यह अंतिम है क्योंकि यह सामग्री दिशानिर्देश –

+0

वास्तव में क्या दिशानिर्देश getSizeDimension के विस्तार पर प्रतिबंध लगाता है इस प्रकार है? आपका क्या अर्थ है? – tse

+1

डिजाइन पुस्तकालय सामग्री दिशानिर्देश इस प्रकार है और यह कारण है क्योंकि आप केवल उपयोग कर सकते हैं 2 dimensions.Check http://www.google.com/design/spec/components/buttons-floating-action-button.html#buttons- फ़्लोटिंग-एक्शन-बटन-फ़्लोटिंग-एक्शन-बटन –

उत्तर

12

क्योंकि मैं mini आकार के फैब का उपयोग नहीं करते, मैं इस आकार नए सिरे से परिभाषित।

dimens.xml:

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

layout.xml (प्रथम फैब दूसरा एक से भी बड़ा हो जाएगा):

<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

इसी तरह 'design_fab_size_normal' है जब fab सामान्य है, मिनी नहीं –

6

आप इस तरह से

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)); 
    } 

} 
में अपने कस्टम FloatingActionButton परिभाषित कर सकते हैं के बजाय

आप अपने गुणक को निर्धारित कर सकते हैं।
इस तरह आपको उन संसाधनों को फिर से परिभाषित करने की आवश्यकता नहीं है जो ऐप के अन्य हिस्सों को प्रभावित कर सकती हैं।

संबंधित मुद्दे