2015-01-16 3 views
7

Фактически, я ищу способ имитировать входящие сообщения FAB. Когда пользователь нажимает красную кнопку, появляется сообщение opac и меню. Поскольку изображения более более осмысленным, следующая картинаПлавающая кнопка действия и белый фон

enter image description here

Я знаю, что существует эта замечательная библиотека (https://github.com/futuresimple/android-floating-action-button) и с этой библиотекой, я могу отобразить меню действий с плавающей. Но моя проблема показывает белый фон (с непрозрачностью). Я не нашел решение, чтобы решить мою проблему ...

Thx заранее

ответ

15

Поместите FloatingActionMenu внутри FrameLayout, который будет поверх других взглядов и будет соответствовать родителю по ширине и высоте. Используйте одинаковые поля для поднятия и смещения справа от меню соответственно.

Установите OnFloatingActionsMenuUpdateListener в свое плавающее меню действий. Теперь переключите/замените цвет рамки макета внутри методов:

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

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

Я показываю FloatingActionMenu во Фрагменте и используя вышеприведенное решение не накладывается панель действий. Любая идея, как добиться наложения на весь экран? –

+1

@PawanKumar У вас возникнет проблема во Фрагменте. Либо представление оверлей будет возвращено фрагменту, либо будет сверху на все. FAB также будет наложен. Лучше использовать FAB в действии. –

0

Я достиг эффекта, который вы только что упомянули следующим способом. Я просто добавил представление за плавающей кнопкой и над другими макетами и сохранил видимость вида GONE, пока меню не будет расширено. Затем я устанавливаю видимость вида VISIBLE. И да, я устанавливаю фон представления на любой непрозрачный цвет, который вы хотите.

Мой код

Мой 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> 

А на операцию или фрагмента, где FloatingButtons обрабатываются

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

Это даст эффект, который вы хотели. Надеюсь это поможет. Это помогло мне. :)

0

Возьмите один макет координатора с панелью инструментов, плавающим меню, вашим содержимым и относительной компоновкой. Установите цвет фона исходного макета на белый и установите его видимость на Gone. Задайте тему «NoActionBar» и используйте панель инструментов вместо действия в действии. Теперь, когда вы открываете плавающее меню, установите видимость Относительного макета на видимую и на близком расстоянии назад.