2016-12-20 11 views
1

На самом деле не существует уже подобный вопрос BringToFront doesn't work inside a coordinator layoutBringToFront заказного вид внутри макета координатор

Однако нет предложений помогли мне сделать BringToFront работу в coordinatorlayout.

Вот макет-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" 
    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"> 

     <include layout="@layout/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"/> 

     <android.support.v4.widget.DrawerLayout 
      android:id="@+id/drawer_layout" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

      <FrameLayout 
       android:id="@+id/main_content_container" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"/> 

      <fragment 
       android:id="@+id/navigation_drawer_container" 
       android:name="..." 
       android:layout_width="@dimen/navigation_drawer_width" 
       android:layout_height="match_parent" 
       android:layout_gravity="start"/> 

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

    </LinearLayout> 


    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/..." 
     android:clickable="true" 
     android:layout_gravity="bottom|end" 
     android:layout_marginRight="20dp" 
     android:layout_marginBottom="60dp" 
     app:borderWidth="0dp"/> 

    <CustomView 
     android:id="@+id/customview" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentBottom="true" 
     android:orientation="vertical" 
     android:visibility="gone" 
     app:layout_behavior="..."/> 

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

Обычай вид наследуется от FrameLayout. Он может изменить его высоту.

Довести пользовательский вид спереди первого я пытался добавить:

mCustomView.bringToFront(); 

Тогда

mCustomView.requestLayout(); 
mCustomView.invalidate(); 

Наконец также

((View)mCustomView.getParent()).requestLayout(); 

Но без успеха. Кнопка все еще находится сверху.

Я пропустил что-нибудь?

Возможно, есть другие возможности, чтобы привести пользовательский вид спереди или поставить кнопку под пользовательский вид?

Я также попытался добавить поведение к кнопке, но поскольку видимость зависит не только от пользовательского вида, я выбрал этот подход.

Благодарим за любую помощь заранее.

+0

У меня такая же проблема, вы решили ее в конце? –

+0

@ DavidVávra nope. просто сдался. Но попробовали ли вы обновить библиотеку поддержки Android, если вы не используете новейшую версию? – Tima

+0

Я решил использовать свойство translationZ, которое хорошо работает на API 21+. Мы рассмотрим совместимость позже. Мы используем новейшую библиотеку поддержки. –

ответ

1

Наконец-то я нашел обходное решение - если я установил setEnabled(false) в AppBar, он идет на задний план, и я могу рисовать другие вещи поверх него независимо от уровня API.

+0

К сожалению, для меня не работало – Tima