Я хотел бы создать эффект навигационного ящика, но вместо того, чтобы выдвигать ящик слева, он должен быть «позади» основного вида, поэтому элемент, который слайд, является видом (т.е. справа) - выдвижной ящик вообще не перемещается, но «раскрывается», сдвигая основной вид в сторону. Проведите пальцем (и нажмите значок гамбургера) так же, как и с выдвижным ящиком, только эффект раскрытия отличается.Android переместить основной контент, чтобы показать ящик
Путь основные вид движения является то же самое, что может быть достигнуто здесь
How to move main content with Drawer Layout left side
, но в моем случае я хочу, чтобы «ящик», чтобы остаться статически под основным видом.
Я достиг желаемого эффекта, накладывая вид и делая ящик прозрачным - это означает, что ящик больше не используется для навигации; просто для эффекта. Использование кода в приведенной выше ссылке
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/whole_frame"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- everything here is now the new "drawer" -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="BOO I am hiding!"
android:id="@+id/tv2"
android:layout_gravity="left|top" />
<!-- /everything here is now the new "drawer" -->
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<!-- The This is the main content frame -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="MOOOOOO!"
android:id="@+id/textView"
android:layout_gravity="left|top" />
</FrameLayout>
<!-- The see-through navigation drawer -->
<RelativeLayout
android:layout_width="280dp"
android:layout_height="match_parent"
android:id="@+id/left_drawer"
android:clickable="false"
android:background="@drawable/transparent_bg" <!-- #00FFFFFF -->
android:layout_gravity="start">
</RelativeLayout>
</android.support.v4.widget.DrawerLayout>
Все отлично, за исключением того ид/TV2 (или других элементов на этом слое) не являются интерактивными, когда «ящик» открыт.
Я пробовал:
1) Изготовление макетов выше, не интерактивный (drawer_layout, content_frame и left_drawer setClickable (ложный) без эффекта).
2) Код в приведенной выше ссылке перемещает content_frame по оси X, а не drawyer_layout - я попытался перемещать drawer_layout вместо кадра - это не работает должным образом, поскольку вы больше не можете нажимать на крайнее право снова закройте ящик.
3) Изменение андроида: layout_width от drawer_layout до fill_parent, но это все еще проблема, поскольку это не тот слой, который перемещается с пути.
Я предполагаю, что DrawerLayout (android.support.v4.widget.DrawerLayout) не должен быть выше другого макета, и мне, возможно, потребуется создать свой собственный ящик для достижения желаемого эффекта - любые идеи или предложения будут замечательными ,
Ваш ответ велик во многих отношениях, спасибо большое! – mogoman
Нет пота. Это было весело. Ура! –