2015-01-16 19 views
7

W rzeczywistości szukam sposobu naśladowania skrzynki odbiorczej FAB. Kiedy użytkownik naciśnie czerwony przycisk, powinien pojawić się widok opac i menu. Ponieważ obrazy są bardziej bardziej sensowne, zobaczyć na poniższym rysunkuRuchomy przycisk akcji i białe tło

enter image description here

wiem, że istnieje tę wspaniałą bibliotekę (https://github.com/futuresimple/android-floating-action-button) oraz z tej biblioteki, mogę wyświetlać pływające menu Akcja. Ale moim problemem jest wyświetlanie białego tła (z nieprzezroczystością). Nie mogę znaleźć rozwiązanie rozwiązać mój problem ...

Thx z góry

Odpowiedz

15

Umieść FloatingActionMenu wewnątrz FrameLayout że będzie na wierzchu innych poglądów i będzie pasował rodzica szerokości i wysokości. Użyj tych samych marginesów, aby podnieść i przesunąć odpowiednio menu w prawo.

Ustaw OnFloatingActionsMenuUpdateListener na pływające menu akcji. Teraz przełącz/zamień kolor tła wewnątrz metody:

@Override 
void onMenuExpanded(){ 
    mFrameLayoutWrapper.setBackgroundColor(mAlpaWhite); 
    } 

    @Override 
    void onMenuCollapsed(){ 
    mFrameLayoutWrapper.setBackgroundColor(Color.TRANSPARENT); 
    } 
+2

Wyświetlam FloatingActionMenu w Fragment i użycie powyższego rozwiązania nie powoduje nałożenia paska akcji. Masz pomysł, jak uzyskać nakładkę na pełnym ekranie? –

+1

@PawanKumar Napotkasz problem w Fragment. Każdy widok nakładki będzie z tyłu fragmentu lub będzie na górze wszystkiego. FAB zostanie również nałożony. Lepiej będzie używać FAB w Activity. –

0

Osiągnąłem efekt, o którym wspomniałem, za pomocą poniższej metody. Właśnie dodałem widok za pływającym przyciskiem i nad innymi układami i utrzymuję widoczność widoku GONE, dopóki menu nie zostanie rozwinięte. Następnie ustawię widoczność widoku na WIDOCZNY. I tak, ustawić tło widoku na dowolny nieprzezroczysty kolor, który chcesz.

Mój kod

Mój plik XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
xmlns:fab="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<TextView 
    android:text="Other View here" 
    android:textSize="50dp" 
    android:layout_centerHorizontal="true" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

<View 
    android:id="@+id/background_dimmer" 
    android:visibility="gone" 
    android:background="#55000000" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 

<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_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    fab:fab_addButtonColorNormal="@color/white" 
    fab:fab_addButtonColorPressed="@color/white_pressed" 
    fab:fab_addButtonPlusIconColor="@color/half_black" 
    fab:fab_labelStyle="@style/menu_labels_style" 
    android:layout_marginBottom="16dp" 
    android:layout_marginRight="16dp" 
    android:layout_marginEnd="16dp"> 

    <com.getbase.floatingactionbutton.FloatingActionButton 
     android:id="@+id/action_a" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     fab:fab_colorNormal="@color/white" 
     fab:fab_title="Action A" 
     fab:fab_colorPressed="@color/white_pressed"/> 

</com.getbase.floatingactionbutton.FloatingActionsMenu> 

A na aktywny lub jego fragment, gdzie FloatingButtons są obsługiwane

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_map); 
    setFloatingButtonControls(); 
} 

private void setFloatingButtonControls(){ 
    this.bckgroundDimmer = findViewById(R.id.background_dimmer); 
    this.floatingActionsMenu = (FloatingActionsMenu) findViewById(R.id.multiple_actions); 
    this.floatingActionsMenu.setOnFloatingActionsMenuUpdateListener(new FloatingActionsMenu.OnFloatingActionsMenuUpdateListener() { 
     @Override 
     public void onMenuExpanded() { 
      bckgroundDimmer.setVisibility(View.VISIBLE); 
     } 

     @Override 
     public void onMenuCollapsed() { 
      bckgroundDimmer.setVisibility(View.GONE); 
     } 
    }); 
} 

To da efekt chciałeś. Mam nadzieję że to pomoże. To na pewno mi pomogło. :)

0

Weź jeden układ koordynatora za pomocą paska narzędzi, ruchomego menu, zawartości i układu względnego. Ustaw kolor tła układu względnego na biały przezroczysty i ustaw jego widoczność na Gone. Ustaw motyw "NoActionBar" i użyj paska narzędzi zamiast paska akcji w działaniu. Teraz za każdym razem, gdy otwierasz pływające menu, ustaw widoczność Układu Względnego na widoczny i na bliskim cofnięciu do zniknięcia.

Powiązane problemy