2015-06-16 3 views
1

У меня есть действующая плавающая кнопка действия внутри LinearLayout. LinearLayout он находится внутри одной вкладки SlidingTabLayout. Я хочу, чтобы кнопка плавающего действия находилась над списком в первой вкладке, а также отображалась внутри второй вкладки в том же месте.Плавающая кнопка действия в ViewPager над спискомView

Так вот activity_main.xml где FrameLayout в нижней части для кнопки плавающих действий:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context=".MainActivity"> 

    <include 
     android:id="@+id/tool_bar" 
     layout="@layout/tool_bar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

    <com.stephenprotzman.o.SlidingTabLayout 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/primary" 
     android:elevation="2dp" /> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="1"> 



    </android.support.v4.view.ViewPager> 

    <FrameLayout 
     android:id="@+id/frame_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="16dp" 
     android:layout_marginRight="16dp" /> 
</LinearLayout> 

И если это помогает, вот fab_layout.xml где объявлена ​​кнопке фактической плавающего действия.

<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <com.stephenprotzman.o.FloatingActionButton 
     android:id="@+id/fab_1" 
     android:layout_width="@dimen/fab_size" 
     android:layout_height="@dimen/fab_size" 
     android:layout_gravity="center_horizontal" 
     android:layout_marginBottom="16dp" 
     android:layout_marginRight="16dp" 
     android:background="@drawable/fab_background" 
     android:elevation="@dimen/fab_elevation" 
     android:stateListAnimator="@animator/fab_anim"> 

     <ImageView 
      android:layout_width="@dimen/fab_icon_size" 
      android:layout_height="@dimen/fab_icon_size" 
      android:layout_gravity="center" 
      android:duplicateParentState="true" 
      android:src="@drawable/fab_icons" /> 

    </com.stephenprotzman.o.FloatingActionButton> 


</FrameLayout> 

Путь, который я в настоящее время он выкладывается кнопка плавающего действия внутри своего собственного участка LinearLayout таким образом, представление списка просто останавливается, когда он попадет на кнопку. Плюс к этому заключается в том, что он действительно отображается на обеих вкладках SlidingTabLayout, хотя все еще находится в его собственном разделе.

В идеальной ситуации я хотел бы, чтобы кнопка была в указанном месте (16 dp снизу и справа), но в верхней части списка на первой вкладке, а вторая вкладка имеет карту внутри это, поэтому я хотел бы, чтобы он был поверх этого.

ответ

1
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     tools:context=".MainActivity"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical"> 

      <include 
       android:id="@+id/tool_bar" 
       layout="@layout/tool_bar" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" /> 

      <com.stephenprotzman.o.SlidingTabLayout 
       android:id="@+id/tabs" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:background="@color/primary" 
       android:elevation="2dp" /> 

      <android.support.v4.view.ViewPager 
       android:id="@+id/pager" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_weight="1" /> 

     </LinearLayout> 

     <include 
      android:id="@+id/fab_layout" 
      layout="@layout/fab_layout" 
      android:layout_width="@dimen/fab_size" 
      android:layout_height="@dimen/fab_size" 
      android:layout_marginBottom="16dp" 
      android:layout_marginRight="16dp" 
      layout_gravity="bottom|right"/> 
    </FrameLayout> 
+0

Спасибо, я просмотрю его, но не могли бы вы представить какой-то контекст о том, что и почему вы делаете эти изменения? Кроме того, это не работает. Он помещает FAB над «SlidingTabLayout» внутри панели действий. – erp

+0

Чтобы разместить «FloatingActionButton» над вашим «LinearLayout», вам нужно выставить его за его пределы. 'FrameLalyout' давайте сделаем именно это. Вы можете использовать 'layout_gravity =" bottom | right "' (я обновил свой ответ), чтобы поместить его в нижний правый угол. –

+0

Спасибо, после нескольких хитростей к положению, я получил это, чтобы работать, как мне было нужно. – erp

Смежные вопросы