AppCompat elevazione Toolbar V21 pre - lollipop

? Tristan Vanderaerden @ | Original: StackOverFlow

Prima di tutto, so che questa domanda è stato chiesto prima, ma non è stato risposto prima . Spero che qualcuno mi può dare una risposta .

Nella mia domanda, io uso la barra degli strumenti da Appcompat_v7 ( API 21 ) . Questo è il mio codice :

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

E questo è lo stile ToolBar che uso :

<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>

Il problema è, che l'elevazione non funziona pre - lecca . Quindi la mia domanda è : E ' possibile avere un ombra sotto la barra degli strumenti su dispositivi pre - lollipop ?



Top 5 Respuesta

1hitch.united @

Penso che si può, ho avuto un problema con il CardView elevazione utilizzando la libreria di supporto . Per farlo funzionare ho dovuto impostare il mio vista come questo .

<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>

Quindi penso che si dovrebbe provare a impostare come questo in XML -

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

Ancora una volta, non ho prova questo . Ma bando Ho dovuto usare la android.support.v7 per farlo funzionare .



2Alessandro Roaro @

Non è possibile utilizzare l'attributo di elevazione prima API 21 ( Android Lollipop ) . Tuttavia, è possibile aggiungere l'ombra di programmazione, ad esempio utilizzando una vista personalizzata posto sotto il Toolbar .

For example:

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

Dove l'ombra è un disegnabile con una sfumatura nera .

3Zielony @

E ' possibile avere ombre reali - animati e ha generato . Il metodo utilizzato da Lollipop è disponibile da Froyo . Accelerazione hardware utilizzato per la produzione di ombra è disponibile da Honeycomb immagino . Ecco come funziona :

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

Si richiede l'aggiunta di attributi di elevazione personalizzati, visualizzazioni personalizzate in grado di ombre di rendering, e con il rendering sceneggiatura e la libreria di compatibilità ( per i dispositivi meno recenti ) . Io non ho intenzione di tuffarsi nei dettagli, perché c'è un sacco di loro tra cui problemi con la compilazione e l' ottimizzazione delle prestazioni minori. Ma è possibile .

Perché non ci sono ombre nella libreria ufficiale di supporto ?

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