2016-02-16 3 views
1

Я использую CoordinatorLayout, AppBarLayout и панель инструментов в DrawerLayout. Но у нее много проблем.Содержимое в DrawerLayout за пределами экрана

Когда я использую дизайн AndroidStudio, я видел content_main вне scrope экрана. beyondScreenPic.

enter image description here

И когда я бегу приложение, это выглядит следующим образом (Fab показывает половину):

see the fab

Компонов активность, как это:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true" 
tools:context=".MainActivity"> 

<android.support.design.widget.CoordinatorLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="?attr/colorPrimary" 
      app:layout_scrollFlags="scroll|enterAlways" 
      app:popupTheme="@style/AppTheme.PopupOverlay" /> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tab" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:fillViewport="false"> 

     </android.support.design.widget.TabLayout> 

    </android.support.design.widget.AppBarLayout> 

    <include layout="@layout/content_main" /> 

</android.support.design.widget.CoordinatorLayout> 

<android.support.design.widget.NavigationView 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:fitsSystemWindows="true" 
    app:headerLayout="@layout/nav_header_main" 
    app:menu="@menu/menu_drawer"></android.support.design.widget.NavigationView> 

это content_main XML:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
app:layout_behavior="@string/appbar_scrolling_view_behavior" 
tools:context=".MainActivity" 
tools:showIn="@layout/activity_main"> 

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

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

и это некоторые Gradle зависимости:

compile 'com.android.support:appcompat-v7:23.0.1' 
compile 'com.android.support:recyclerview-v7:23.0.1' 
compile 'com.android.support:design:23.0.1' 

спасибо за внимание.

ответ

0

О, я решил это с большим количеством аттестации.

КоординаторLayout - это супер FrameLayout.

Таким образом, он будет работать идеально, если только имеет только один элемент; Просто используйте LinearLayout окружать appbarLayout и content_layout:

<android.support.design.widget.CoordinatorLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior" 
     android:orientation="vertical"> 
     <android.support.design.widget.AppBarLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:theme="@style/AppTheme.AppBarOverlay"> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:background="?attr/colorPrimary" 
       app:layout_scrollFlags="scroll|enterAlways" 
       app:popupTheme="@style/AppTheme.PopupOverlay" /> 

      <android.support.design.widget.TabLayout 
       android:id="@+id/tab" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:fillViewport="false"> 

      </android.support.design.widget.TabLayout> 

     </android.support.design.widget.AppBarLayout> 

     <include layout="@layout/content_main" /> 
    </LinearLayout> 

</android.support.design.widget.CoordinatorLayout> 

он работает хорошо.

0

Измените высоту компоновки координатора, чтобы она соответствовала родительскому. может быть, это решит проблему.

+0

все еще не работает, но спасибо – RainFool

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