2014-11-24 4 views
4

Итак, у меня есть панель инструментов, которую я устанавливаю в качестве моей поддержки ActionBar, которую я хочу быть в режиме наложения. На данный момент я чувствую, что я все пробовал, но ничего не работает.Невозможно получить AppCompat ActionBar/Toolbar, чтобы стать наложением

Вот стили я в настоящее время:

<style name="Theme.ArgleBargle" parent="@style/Theme.AppCompat.Light"> 
    <item name="colorPrimary">@color/primary</item> 
    <item name="colorAccent">@color/accent</item> 
    <item name="vpiIconPageIndicatorStyle">@style/Widget.IconPageIndicator</item> 
    <item name="vpiTabPageIndicatorStyle">@style/Widget.TabPageIndicator</item> 
    <item name="windowActionBar">false</item> 
    <item name="windowActionBarOverlay">true</item> 
    <item name="android:windowActionBarOverlay">true</item> 
    <item name="android:windowBackground">@color/background</item> 
</style> 

<style name="CustomActionBar" parent="@style/ThemeOverlay.AppCompat.Light"> 
    <item name="android:windowActionBarOverlay">true</item> 
    <!-- Support library compatibility --> 
    <item name="windowActionBarOverlay">true</item> 
</style> 

А вот код для моей панели инструментов:

<android.support.v7.widget.Toolbar 
     android:id="@+id/actionbar" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:minHeight="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     app:theme="@style/CustomActionBar"/> 

И, наконец, вот где я устанавливаю его в деятельности:

actionbar = (Toolbar) findViewById(R.id.actionbar);; 
setSupportActionBar(actionbar); 

Я также пробовал звонить getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY) без везения.

ответ

5

Итак, выясняется, что проблема была одновременно полностью простой, но все же не очевидной (по крайней мере, для меня). В основном проблема заключается в том, что, хотя панель инструментов задается как панель действий, в конце дня элемент компоновки объявлен в XML. Таким образом, трюк, конечно, должен быть уверен, что он перекрывается в XML. Вот пример из моего макета, сейчас:

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/actionbar" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:minHeight="?attr/actionBarSize" 
     android:background="?attr/colorPrimary"/> 

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

</RelativeLayout> 

Все работает как ожидается. Надеюсь, это поможет кому-то другому, если у них будет такая же проблема!

+5

Андроид SDK должен предоставить это автоматически. также нет стандартного метода использования развернутой/свертывающей панели инструментов, показанной в качестве стандартных конструкций в android lollypop. кошмар, являющийся разработчиком Android. – rDroid

+0

Правильный 'RelativeLayout' код должен быть' android.support.v7.widget.Toolbar' ПОСЛЕ 'FrameLayout' правильно? Таким образом, «Панель инструментов» получает «FrameLayout». – shkschneider

+0

Я думаю, что вышеприведенный код не может нарисовать панель инструментов, потому что кадр может скрыть это. Возможно, вы захотите изменить порядок компоновки фреймов и панели инструментов –

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