AppCompat v21 Toolbar высота до леденец

? Tristan Vanderaerden @ | Original: StackOverFlow
---

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

В моем приложении я использую панель инструментов Appcompat_v7 ( API 21 ) . Это мой код :

<android.support.v7.widget.Toolbar
    style="@style/DarkActionbarStyle"
    android:id="@+id/toolBar"
    android:layout_width="match_parent"
    android:layout_height="@dimen/actionbar_height" />

И этоToolBar стиль я использую:

<style name="DarkActionbarStyle" parent="@style/Widget.AppCompat.Toolbar">
    <item name="android:background">?attr/colorPrimary</item>
    <item name="titleTextAppearance">@style/ActionBarTitle</item>
    <item name="android:elevation">2dp</item>
    <item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
    <item name="theme">@style/ThemeActionBarDark</item>
</style>

<style name="ThemeActionBarDark" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="actionBarItemBackground">@drawable/btn_dark_orange</item>
    <item name="selectableItemBackground">@drawable/btn_dark_orange</item>
</style>

Проблема в том, что высота не работает предварительный леденец . Так что мой вопрос : Есть ли возможность иметь тень под панели на предварительно леденец устройств ?

---

Top 5 ответ

1hitch.united @

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

<android.support.v7.widget.CardView 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:android.support.v7.cardview="http://schemas.android.com/apk/res-auto"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="125dp"
    android:orientation="horizontal"
    android:layout_margin="5dp"
    card_view:cardCornerRadius="5dp"
    android.support.v7.cardview:cardElevation="10dp">
</android.support.v7.widget.CardView>

Так что я думаю, вы должны попробовать установить его, как это в XML -

android.support.v7.toolbar:elevation="10dp"

Опять же, я не проверял это . Но обратите внимание, я должен был использоватьandroid.support.v7, чтобы заставить его работать .

2Alessandro Roaro @

Вы не можете использовать высот атрибут перед API 21 (Android Lollipop ) . Однако вы можете добавить тень программно, например, с помощью настраиваемого представления, помещаемых подToolbar .

For example:

<ImageView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/toolbar"
        android:background="@drawable/shadow"/>

Гдетеньхолст с черным градиентом .

3Zielony @

Это возможно, чтобы иметь реальные тени - анимированные и генерируется . Метод, используемый Lollipop доступен, начиная с Froyo . Аппаратное ускорение для генерации теней доступен, начиная с Honeycomb, я думаю. Вот как это работает:

draw your view to an off-screen bitmap with LightingColorFilter set to 0,0 blur the black shape (the off-screen bitmap) using the ScriptIntrinsicBlur class and elevation value as radius draw the bitmap beneath the view

Это требует добавления пользовательских атрибутов рельефа и пользовательские представления, способные обрабатывать тени, и с помощью визуализации сценарий и библиотеки совместимости ( для старых устройств ). Я не собираюсь погружаться в детали, потому что таммного из них, включая проблем с компиляцией и мелких оптимизаций производительности. Но это возможно.

Почему нет никаких теней на официальном библиотеку поддержки ?

it would require changes in the UI framework as it's impossible to freely draw outside view bounds smooth animation requires a quite good GPU

See:

https://www.youtube.com/watch?v=jbU4SXblO5s https://androidreclib.wordpress.com/2014/11/25/lollipops-shadows-on-gingerbread/ https://github.com/ZieIony/Carbon