2016-04-25 57 views
3

我正在使用com.getbase.floatingactionbutton.FloatingActionsMenu展開FAB。但無法在fab菜單上設置圖標。我已經嘗試設置背景可繪製,但沒有工作。 感謝如何將圖標設置爲getbase FloatingActionsMenu

  <FrameLayout 
       android:id="@+id/frame_layout" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:background="@color/white_overlay"> 

     <com.getbase.floatingactionbutton.FloatingActionsMenu 
      android:id="@+id/fab_menu" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="right|bottom" 
      fab:fab_addButtonColorNormal="#C0007D" 
      fab:fab_addButtonColorPressed="#C0007D" 
      fab:fab_addButtonStrokeVisible="true" 
      fab:fab_addButtonSize="normal" 
      fab:fab_icon="@drawable/main_logo" 
      fab:fab_labelStyle="@style/menu_labels_style" 
      fab:fab_labelsPosition="left"> 



     <com.getbase.floatingactionbutton.FloatingActionButton 
      android:id="@+id/locate_store" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      fab:fab_colorNormal="#C0007D" 
      fab:fab_colorPressed="#C0007D" 
      fab:fab_icon="@drawable/locate_store" 
      fab:fab_size="mini" 
      fab:fab_title="Locate Store" /> 

    </com.getbase.floatingactionbutton.FloatingActionsMenu> 
</FrameLayout> 

這裏是我的Java類代碼,

 final FloatingActionsMenu fabMenu = (FloatingActionsMenu)   v.findViewById(R.id.fab_menu); 

     fabMenu.setOnFloatingActionsMenuUpdateListener(new FloatingActionsMenu.OnFloatingActionsMenuUpdateListener() { 
     @Override 
     public void onMenuExpanded() { 
      frameLayout.getBackground().setAlpha(240); 
      frameLayout.setOnTouchListener(new View.OnTouchListener() { 
       @Override 
       public boolean onTouch(View v, MotionEvent event) { 
        fabMenu.collapse(); 
        return true; 
       } 
      }); 
     } 

     @Override 
     public void onMenuCollapsed() { 
      frameLayout.getBackground().setAlpha(0); 
      frameLayout.setOnTouchListener(null); 
     } 
    }); 
+0

我有同樣的問題。 :( – Thanos

+0

也許這會有所幫助,這不是我正在尋找的答案,但也許這就是你正在尋找的。http://www.rishabhsinghal.in/implement-floating-action-button-similar-to-inbox by-gmail-by-evernote/ – Thanos

+0

@Thanos我想用一個新圖標替換加號 –

回答

2

我想出了一個可能的解決方案。它不是通用的,但它符合我的需求。如果你覺得這不是你所需要的,我認爲這是一個很好的繼續。

所以我做的是叉圖書館futuresimple/android-floating-action-button。您需要在settings.gradle文件中添加庫幷包含庫include ':library'。然後在文件的build.gradle我刪除:

dependencies { 
    compile 'com.getbase:floatingactionbutton:1.10.1' 
} 

我從項目添加庫:

dependencies { 
    compile project(':library') 
} 

然後在FloatingActionsMenu I類取代private AddFloatingActionButton mAddButton;private FloatingActionButton mAddButton;。如果您檢查第59行上的AddFloatingActionButton類,則會拋出異常,如果您嘗試上的setIcon,則這是原因。我還添加了一個方法來更新圖標,colorNormal和colorPressed:

public void setMenuButton(int myIcon, int myColorNormal, int myColorPressed) { 
     mAddButton.setIcon(myIcon); 
     mAddButtonColorNormal = myColorNormal; 
     mAddButton.setColorNormalResId(mAddButtonColorNormal); 
     mAddButtonColorPressed = myColorPressed; 
     mAddButton.setColorPressed(mAddButtonColorPressed); 
    } 

什麼方法做的是簡單地調用了FloatingActionButton類的地方更新按鈕,所有預定義的方法。

下一步創建從庫中取代碼的佈局文件(.XML)樣品中的菜單按鈕:

<com.getbase.floatingactionbutton.FloatingActionsMenu 
    android:id="@+id/multiple_actions" 
    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="16dp" 
    android:layout_marginEnd="16dp" 
    android:layout_marginRight="16dp" 
    fab:fab_addButtonColorNormal="@color/white" 
    fab:fab_addButtonColorPressed="@color/white_pressed" 
    fab:fab_addButtonPlusIconColor="@color/half_black" 
    fab:fab_labelStyle="@style/menu_labels_style"> 

然後我選擇去編程完成剩下的在*.java文件而且零件可以被定義在xml文件中,比如定義浮動按鈕。我不會詳細檢查庫示例目錄。

因此,在我的*.java文件中,我調用了我在 *.xml文件中創建的菜單按鈕。

final FloatingActionButton actionA = new FloatingActionButton(getBaseContext()); 
     actionA.setTitle("Familie"); 
     actionA.setIcon(R.drawable.world_map); 
     actionA.setSize(FloatingActionButton.SIZE_MINI); 
     actionA.setColorNormalResId(R.color.red); 
     actionA.setColorPressedResId(R.color.black_semi_transparent); 
     actionA.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Toast.makeText(MainMapView.this, "Action Description", Toast.LENGTH_SHORT).show(); 
       ((FloatingActionsMenu) findViewById(R.id.multiple_actions)).collapse(); 
       return; 
      } 
     }); 

這個代碼示例只是簡單的創建按鈕,添加您選擇的參數:

final FloatingActionsMenu menuMultipleActions = (FloatingActionsMenu) findViewById(R.id.multiple_actions); 

然後爲您要添加,例如用於創建編程示例一個按鈕,你創造儘可能多的按鈕定義。根據需要添加儘可能多的按鈕。

然後,您需要做的下一步是設置菜單按鈕。代碼示例:

menuMultipleActions.setMenuButton(R.drawable.icon2, R.color.blue, R.color.white_pressed); 

然後最後一步是添加您先前創建的按鈕。代碼示例:

menuMultipleActions.addButton(actionA); 

希望這可以幫助你並解決你的問題。根據我的研究,我發現其他人也創建了類似的庫,但我現在找不到鏈接。如果你在網上搜索一下,你會發現它。

目前菜單按鈕的顏色沒有正確更新,但我正在處理它,如果我找到解決方案,我也會在這裏更新答案。希望這有助於快樂的編碼。

+0

如果你能夠知道如何手動導入庫會很有幫助,我已經在settings.gradle中包含了':libs:android-floating-action-button-master',並且還添加了'compile fileTre在應用程序模塊的build.gradle文件中,e(dir:'libs',包括:'android-floating-action-button-master')'' AS仍然無法解析FloatingActionsMenu類。請告訴我該如何解決這個問題。 – backslashN

1

我寧可建議使用僅從com.getbase.floatingactionbutton.FloatingActionsMenu派生的this庫。

您可以通過在FloatingActionMenu使用下列屬性更改圖標:

fab:fab_menuIcon="@drawable/sort" 

但是,您可以使用父庫(com.getbase.floatingactionbutton.FloatingActionsMenu)的所有功能。