2015-12-08 3 views
1

У меня есть CoordinatorLayout с AppBarLayout и складным TabLayout. У меня есть ViewPager для моего контента. Это рабочая иерархия до сих пор:КоординаторLayout с скрытым фрагментом внизу

<CoordinatorLayout> 
    <AppBarLayout> 
     <Toolbar /> 
     <TabLayout /> 
    </AppBarLayout> 
    <ViewPager /> 
</CoordinatorLayout> 

Теперь я хочу иметь фрагмент внизу, который я могу скрыть. Когда нижний фрагмент скрыт, ViewPager должен взять все свободное пространство. Когда нижний фрагмент виден, никакие части ViewPager не должны быть запутаны.

Это первая попытка:

<CoordinatorLayout> 
    <AppBarLayout> 
     <Toolbar /> 
     <TabLayout /> 
    </AppBarLayout> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

    <FrameLayout 
     android:id="@id/fragmentContainer" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:layout_gravity="bottom" 
     android:background="@android:color/background_light" 
     android:elevation="@dimen/action_bar_elevation"/> 

</CoordinatorLayout> 

Используя этот макет, нижняя часть моего ViewPager является запутанным, когда расположение кадра видно. Придавая ViewPager нижнему краю с высотой FrameLayouts, у меня всегда есть пустое место внизу, даже если FrameLayout ушел.

Я попытался обернуть ViewPager и FrameLayout в LinearLayout, но затем верхняя часть ViewPager находится за AppBar, когда FrameLayout для фрагмента виден.

Может ли кто-нибудь помочь?

ответ

1

Я не 100% уверен, что если я понимаю ваш вопрос, но почему бы вам не попробовать это:

<CoordinatorLayout> 
    <AppBarLayout> 
     <Toolbar /> 
     <TabLayout /> 
    </AppBarLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

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

     <FrameLayout 
      android:id="@id/fragmentContainer" 
      android:layout_height="wrap_content" 
      android:layout_width="match_parent" 
      android:layout_gravity="bottom" 
      android:background="@android:color/background_light" 
      android:elevation="@dimen/action_bar_elevation"/> 
    </LinearLayout> 
</CoordinatorLayout> 

ViewPager'slayout_width и layout_weight очень важны, поэтому скопировать эти точные значения.

+0

Спасибо за ваш ответ, но я уже пробовал использовать LinearLayout и layout_weight. Вот что я имел в виду в последней части моего вопроса. При таком подходе ViewPager и FrameLayout не перекрываются, и ViewPager выравнивается с нижней частью экрана, когда FrameLayout не работает. Теперь проблема заключается в том, что верхняя часть моего ViewPager закрыта AppBar независимо от того, исчезла ли FrameLayout или видима. –

+1

Вы пытались переместить 'app: layout_behavior =" @ string/appbar_scrolling_view_behavior "' в 'LinearLayout'? –

+0

только для того, чтобы увидеть, помогает ли это в том, что AppBar перекрывает ваш макет? –