2015-02-05 2 views
5

Мое приложение имеет DrawerLayout с двумя ящиками в нем, один слева для навигации и один справа для уведомлений. Когда приложение проходит холодный старт, и я открываю левый ящик, правый ящик прыгает с левого края экрана вправо.DrawerLayout с двумя ящиками: правый «прыжок», когда он открывается?

Это выглядит следующим образом: http://i.imgur.com/mhoJ7MZ.gifv

Как показано на видео, я попытался с помощью DrawerLayout «s isDrawerOpen и isDrawerVisible методы, чтобы попытаться увидеть, если он на самом деле думает, что правый ящик открыт, когда это не (так это кажется «закрытием» ящика при открытии левой), но я ничего не получил от этого.

Что вызывает странный прыжок?

Ниже приведена информация о моем действии, полный код here.

<?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" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

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

    <LinearLayout 
     android:id="@+id/left_drawer" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:background="#ACFF0000" 
     android:gravity="center" 
     android:visibility="gone"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="LEFT DRAWER" 
      android:textSize="24sp" /> 

    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/right_drawer" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="end" 
     android:background="#AC00FF00" 
     android:gravity="center" 
     android:visibility="gone"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="RIGHT DRAWER" 
      android:textSize="24sp" /> 
    </LinearLayout> 

</android.support.v4.widget.DrawerLayout> 

ответ

8

Проблема происходит от android:visibility="gone" элемента на LinearLayout с - По какой-то причине, имеющая видимости набора Унесенных конфликтов с логикой DrawerLayout для если вид показывает или нет, поэтому он пытается скрыть это.

Принимая это за XML, все выглядит одинаково (поскольку DrawerLayout смотрит на layout_gravity, чтобы решить, какие детские представления являются ящиками и прячет их сами) и не имеют странного прыжка.

+0

Тестирование: этот ответ превосходный. –

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