Lecca-lecca: disegna dietro statusBar con il suo colore impostato su trasparente


142

Ho impostato il mio colore StatusBar su trasparente per Lollipop solo con la seguente riga nel mio tema:

<item name="android:statusBarColor">@android:color/transparent</item>

Ora ho bisogno di disegnare dietro di esso, ma non riesco a ottenere alcun disegno di vista dietro di esso. So come farlo con la windowTranslucentStatusproprietà, ma non voglio usare questa proprietà poiché ignorerà quindi il colore di statusBar impostato su trasparente.


2
Puoi usare ancheandroid:fitsSystemWindows="true"
Aznix,

Risposte:


385

Metodo n. 1:

Per ottenere una barra di stato completamente trasparente, è necessario utilizzare statusBarColor, disponibile solo su API 21 e successive. windowTranslucentStatusè disponibile su API 19 e successive, ma aggiunge uno sfondo colorato per la barra di stato. Tuttavia, l'impostazione windowTranslucentStatusconsente di ottenere una cosa che statusBarColornon diventa trasparente: imposta i flag SYSTEM_UI_FLAG_LAYOUT_STABLE e SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN. Il modo più semplice per ottenere lo stesso effetto è impostare manualmente questi flag, che disabilita efficacemente gli inserti imposti dal sistema di layout di Android e ti lascia fare da soli.

Chiamate questa linea nel vostro onCreatemetodo:

getWindow().getDecorView().setSystemUiVisibility(
    View.SYSTEM_UI_FLAG_LAYOUT_STABLE
    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);

Assicurati di impostare anche la trasparenza in /res/values-v21/styles.xml:

<item name="android:statusBarColor">@android:color/transparent</item>

Oppure imposta la trasparenza a livello di codice:

getWindow().setStatusBarColor(Color.TRANSPARENT);

Il lato positivo di questo approccio è che gli stessi layout e design possono essere utilizzati anche su API 19 scambiando la barra di stato trasparente per la barra di stato traslucida colorata.

<item name="android:windowTranslucentStatus">true</item>

Metodo n. 2:

Se devi solo dipingere un'immagine di sfondo sotto la barra di stato, anziché posizionare una vista dietro di essa, puoi farlo semplicemente impostando lo sfondo del tema della tua attività sull'immagine desiderata e impostando la trasparenza della barra di stato come mostrato nel metodo # 1. Questo è stato il metodo che ho usato per creare gli screenshot per l' articolo della polizia Android di alcuni mesi fa.

Metodo n. 3:

Se devi ignorare gli inserti di sistema standard per alcuni layout mentre li fai funzionare in altri, l'unico modo possibile per farlo è lavorare con la ScrimInsetsFrameLayoutclasse spesso collegata . Naturalmente, alcune delle cose fatte in quella classe non sono necessarie per tutti gli scenari. Ad esempio, se non si prevede di utilizzare l'overlay di barra di stato sintetico, è sufficiente commentare tutto nel init()metodo e non preoccuparsi di aggiungere nulla al file attrs.xml. Ho visto questo approccio funzionare, ma penso che scoprirai che comporta alcune altre implicazioni che potrebbero essere un sacco di lavoro da aggirare.

Ho anche visto che sei contrario a impacchettare più layout. Nel caso di avvolgere un layout all'interno di un altro, dove entrambi hanno match_parentaltezza e larghezza, le implicazioni sulle prestazioni sono troppo banali di cui preoccuparsi. Indipendentemente da ciò, puoi evitare completamente quella situazione cambiando la classe da cui si estende FrameLayouta qualsiasi altro tipo di classe Layout che ti piace. Funzionerà bene.


9
Grazie mille, impostare i flag SYSTEM_UI_FLAG_LAYOUT_STABLEe SYSTEM_UI_FLAG_LAYOUT_FULLSCREENera la soluzione che stavo cercando.
alxscms,

3
Ho cercato la tua prima soluzione per un mese. Grazie!
NeoKree,

1
Ciao. Il tuo codice funziona perfettamente. Ma quando esco dal frammento, come devo cambiare le modifiche?
TheOnlyAnil

3
Questo non funziona con CollapsingToolbarLayoute Toolbar: la barra di stato non è completamente traslucida e android:statusBarColornon ha alcun effetto
Konstantin Konopko

Grazie. Se desideri tornare a un'attività non a schermo intero, leggi developer.sonymobile.com/knowledge-base/tutorials/… .
CoolMind

43

Questo ha funzionato per il mio caso


// Create/Set toolbar as actionbar
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

// Check if the version of Android is Lollipop or higher
if (Build.VERSION.SDK_INT >= 21) {

    // Set the status bar to dark-semi-transparentish
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,
            WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

    // Set paddingTop of toolbar to height of status bar.
    // Fixes statusbar covers toolbar issue
    toolbar.setPadding(0, getStatusBarHeight(), 0, 0);
}

// A method to find height of the status bar
public int getStatusBarHeight() {
    int result = 0;
    int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
    if (resourceId > 0) {
        result = getResources().getDimensionPixelSize(resourceId);
    }
    return result;
}

Per ulteriori informazioni sull'uso delle statusbar: youtube.com/watch?v=_mGDMVRO3iE



@TheOnlyAnil definisce un'altezza fissa della barra degli strumenti :) "56dp" o giù di lì dovrebbe apparire bene
Michael,

4
Ottenere l'altezza della barra di stato in questo modo è totalmente non supportato, non documentato e sicuramente si romperà nelle versioni future. Utilizzare fitSystemWindows = "true" invece.
Greg Ennis

1
Beh, lo sto facendo anche perché a volte devi solo farlo.
Greg Ennis

2
Questa è una pessima idea, secondo Chris Banes (ingegnere di Google) in questo discorso: youtube.com/watch?v=_mGDMVRO3iE
Martin Marconcini

1
@Michael FWIW, l'ho già fatto in passato e WindowInsets api un (metodo) per fare questo "dovrebbe essere semplice e fatto senza che dobbiamo pensarci", ma non lo è, è un'API inutile e scadente che aggiunge un molte spese generali non necessarie. Google è sempre completo all'80% e lascia l'ultimo 20% agli sviluppatori ... che hackerano fino a quando non lo realizzano. ¯_ (ツ) _ / ¯
Martin Marconcini,

21

Prova questo tema

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="colorPrimaryDark">@android:color/transparent</item>
    <item name="colorPrimary">@color/md_blue_200</item>
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="android:statusBarColor">@android:color/transparent</item>
    <item name="android:windowTranslucentStatus">true</item>
</style>

Assicurati che, il tuo set di layout

android:fitsSystemWindows="false"

4
l'impostazione android:fitsSystemWindows="false"sta tagliando la barra degli strumenti a metà.
Hammad Nasir,

16

Invece di

<item name="android:statusBarColor">@android:color/transparent</item>

Utilizza il seguente:

<item name="android:windowTranslucentStatus">true</item>

E assicurati di rimuovere l'imbottitura superiore (che viene aggiunta per impostazione predefinita) sul layout "MainActivity".

Si noti che ciò non rende la barra di stato completamente trasparente e sulla barra di stato sarà comunque presente un overlay "nero sbiadito".


2
Durante l'utilizzo <item name="android:windowTranslucentStatus">true</item>, Android mette uno sfondo nero sbiadito sotto la barra di stato che non è quello che sto cercando. In qualche modo però non avere questo sfondo nero sbiadito?
alxscms,

1
Ho provato molte cose, ma non riesco a trovare un modo per rimuovere lo sfondo nero sbiadito. Pertanto, sto concludendo la mia ricerca dicendo che non è possibile su Android (nemmeno con ScrimLayout). Questo tipo di senso ha senso, perché garantisce la corretta leggibilità della barra di stato in ogni momento. Aggiornerò la mia risposta sopra.
Jeroen Mols il

Penso che sarebbe molto strano riuscire a mettere un colore trasparente nella barra di stato, senza essere in grado di disegnare dietro di essa. Capisco perché dici che non ha senso rimuovere questo sfondo nero sbiadito, ma sicuramente non è così difficile essere abbastanza attenti da mantenere visibile l'icona della barra di stato. Ecco un articolo della polizia Android che mostra l'uso di una barra di stato trasparente androidpolice.com/2014/07/04/… . Proverò a contattare l'autore.
alxscms,

1
Spero che tu possa metterti in contatto con lui. Mi sto interessando molto anche a questo :)
Jeroen Mols,

Grande! Anche aggiornata la mia risposta.
Jeroen Mols il

9

La soluzione di Cody Toombs mi ha quasi aiutato. Non sono sicuro che si tratti o meno di Xamarin , ma ora ho una soluzione accettabile:

Esempio

Questa è la mia configurazione:

Ho un progetto Android in cui ho fatto riferimento ai pacchetti Android.Support v4 e v7. Ho due stili definiti:

Valori / styles.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<resources>
    <style name="MyStyle" parent="@style/Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowTranslucentStatus">true</item>
    </style>
</resources>

I valori-V21 / styles.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<resources>
    <style name="MyStyle" parent="@style/Theme.AppCompat.Light.NoActionBar">
        <item name="android:statusBarColor">@android:color/transparent</item>
    </style>
</resources>

Obiettivi AndroidManifest "MyStyle":

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.agn.test.test">
    <uses-sdk android:minSdkVersion="10" />
    <application android:allowBackup="true" android:icon="@mipmap/icon" android:label="@string/app_name" android:theme="@style/MyStyle">
    </application>
</manifest>

E infine il codice nell'attività principale:

[Activity (Label = "Test", MainLauncher = true, Icon = "@mipmap/icon")]
public class MainActivity : Activity
{
    protected override void OnCreate (Bundle savedInstanceState)
    {
        base.OnCreate (savedInstanceState);

        SetContentView (Resource.Layout.Main);
        //Resource.Layout.Main is just a regular layout, no additional flags. Make sure there is something in there like an imageView, so that you can see the overlay.

        var uiOptions = (int)Window.DecorView.SystemUiVisibility;
        uiOptions ^= (int)SystemUiFlags.LayoutStable;
        uiOptions ^= (int)SystemUiFlags.LayoutFullscreen;
        Window.DecorView.SystemUiVisibility = (StatusBarVisibility)uiOptions;

        Window.AddFlags (WindowManagerFlags.DrawsSystemBarBackgrounds);
    }
}

Si noti che ho impostato il flag DrawsSystemBarBackgrounds, questo fa la differenza

Window.AddFlags (WindowManagerFlags.DrawsSystemBarBackgrounds); 

Ho trascorso molto tempo a fare le cose nel modo giusto, troppo tempo in effetti. Spero che questa risposta aiuti chiunque cerchi di ottenere la stessa cosa.


1
android:windowTranslucentStatusrichiede il livello API 19 o superiore, come è possibile utilizzarlo sui valori / styles.xml con un valore android:minSdkVersion10?
mradzinski,

7

La risposta di @Cody Toombs porta a un problema che porta il layout dietro la barra di navigazione. Quindi quello che ho trovato sta usando questa soluzione fornita da @Kriti

ecco lo snippet di codice di Kotlin per lo stesso:

if (Build.VERSION.SDK_INT >= 19 && Build.VERSION.SDK_INT < 21) {
    setWindowFlag(this, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, true)
}

if (Build.VERSION.SDK_INT >= 19) {
    window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
}

if (Build.VERSION.SDK_INT >= 21) {
    setWindowFlag(this, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, false)
    getWindow().setStatusBarColor(Color.TRANSPARENT)
}

private fun setWindowFlag(activity: Activity, bits: Int, on: Boolean) {

    val win: Window = activity.getWindow()

    val winParams: WindowManager.LayoutParams = win.getAttributes()
    if (on) {
        winParams.flags = winParams.flags or bits
    } else {
        winParams.flags = winParams.flags and bits.inv()
    }
    win.setAttributes(winParams)
}

È inoltre necessario aggiungere

android:fitsSystemWindows="false"

vista principale del layout.


3

Ho avuto lo stesso problema, quindi creo ImageView che disegna dietro la barra di stato API 19+

Imposta l'immagine personalizzata dietro la barra di stato gist.github.com

public static void setTransparent(Activity activity, int imageRes) {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
        return;
    }
    // set flags
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
        activity.getWindow().setStatusBarColor(Color.TRANSPARENT);
    } else {
        activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
    }

    // get root content of system window
    //ViewGroup rootView = (ViewGroup) ((ViewGroup) activity.findViewById(android.R.id.content)).getChildAt(0);
    // rootView.setFitsSystemWindows(true);
    // rootView.setClipToPadding(true);

    ViewGroup contentView = (ViewGroup) activity.findViewById(android.R.id.content);
    if (contentView.getChildCount() > 1) {
        contentView.removeViewAt(1);
    }

    // get status bar height
    int res = activity.getResources().getIdentifier("status_bar_height", "dimen", "android");
    int height = 0;
    if (res != 0)
        height = activity.getResources().getDimensionPixelSize(res);

    // create new imageview and set resource id
    ImageView image = new ImageView(activity);
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, height);
    image.setLayoutParams(params);
    image.setImageResource(imageRes);
    image.setScaleType(ScaleType.MATRIX);

    // add image view to content view
    contentView.addView(image);
    // rootView.setFitsSystemWindows(true);

}

2

È possibile utilizzare ScrimInsetFrameLayout

https://github.com/google/iosched/blob/master/android/src/main/java/com/google/samples/apps/iosched/ui/widget/ScrimInsetsFrameLayout.java

android: fitsSystemWindows = "true" dovrebbe essere impostato su layout scrim!


Ho visto quella classe ma cosa succede se voglio usare un RelativeLayoutinvece di un FrameLayout?
alxscms,

3
usa il layout relativo all'interno di un framelayout.
Murtaza Khursheed Hussain,

2
Nidificare i layout nei layout non è sicuramente una soluzione per me per quanto riguarda le prestazioni
alxscms

1
le prestazioni dell'app dipendono da molte cose che possono variare. se non hai via d'uscita provalo.
Buona

Ho capito cosa intendi, ma deve esserci un'altra soluzione, altrimenti potrebbe esserci un modo per implementare su qualsiasi layout ciò che è stato implementato in questo layout personalizzato. Ma grazie comunque
alxscms il

1

Simile ad alcune delle soluzioni pubblicate, ma nel mio caso ho reso trasparente la barra di stato e ho corretto la posizione della barra delle azioni con un margine negativo

if (Build.VERSION.SDK_INT >= 21) {
    getWindow().setStatusBarColor(Color.TRANSPARENT);
    FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) toolbar.getLayoutParams();
    lp.setMargins(0, -getStatusBarHeight(), 0, 0);
}

E ho usato nella barra degli strumenti e nella vista principale

android:fitsSystemWindows="true"

1
getStatusBarHeight () non è standard
Roel,

Questo metodo è implementato sulla soluzione di @ mike-milla ... public int getStatusBarHeight () {int result = 0; int resourceId = getResources (). getIdentifier ("status_bar_height", "dimen", "android"); if (resourceId> 0) {result = getResources (). getDimensionPixelSize (resourceId); } risultato di ritorno; }
jegumi,

Grazie. L'ho fatto così: AppBarLayout.LayoutParams lp = (AppBarLayout.LayoutParams) toolbar.getLayoutParams (); lp.topMargin + = getStatusBarHeight ();
CoolMind,

1

C'è una buona libreria StatusBarUtil di @laobie che aiuta a disegnare facilmente l'immagine in StatusBar.

Aggiungi semplicemente il tuo build.gradle:

compile 'com.jaeger.statusbarutil:library:1.4.0'

Quindi nel set Attività

StatusBarUtil.setTranslucentForImageView(Activity activity, int statusBarAlpha, View viewNeedOffset)

Nel layout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    android:orientation="vertical">

    <ImageView
        android:layout_alignParentTop="true"
        android:layout_width="match_parent"
        android:adjustViewBounds="true"
        android:layout_height="wrap_content"
        android:src="@drawable/toolbar_bg"/>

    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/view_need_offset"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@android:color/transparent"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
            app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>

        <!-- Your layout code -->
    </android.support.design.widget.CoordinatorLayout>
</RelativeLayout>

Per maggiori informazioni scarica la demo o il clone dalla pagina di github e gioca con tutte le funzionalità.

Nota: supporto KitKat e versioni successive.

Spero che aiuti qualcun altro!


0

Con Android Studio 1.4, il modello di progetto con il codice della piastra della caldaia imposta il Overlaytema su AppbarLayout e / o Toolbar. Sono inoltre impostati per essere renderizzati dietro la barra di stato da fitSystemWindowattributo = vero. Ciò causerà il rendering solo della barra degli strumenti direttamente sotto la barra di stato e tutto il resto verrà visualizzato sotto la barra degli strumenti. Quindi le soluzioni fornite sopra non funzioneranno da sole. Dovrai apportare le seguenti modifiche.

  • Rimuovere il tema Overlay o cambiarlo in tema non overlay per la barra degli strumenti.
  • Inserisci il seguente codice nel tuo file styles-21.xml .

    @android: colore / trasparente

  • Assegna questo tema all'attività contenente il cassetto di navigazione nel file AndroidManifest.xml .

Ciò renderà il riquadro di navigazione da renderizzare dietro la barra di stato trasparente.


0

Tutto quello che devi fare è impostare queste proprietà nel tuo tema

<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>

1
Sono abbastanza sicuro che questo farà cadere il layout sotto i pulsanti di navigazione dell'interfaccia utente (dispositivi con navigazione su schermo). Ciò ha reso inaccessibile la vista di navigazione inferiore nella nostra app, quindi abbiamo abbandonato queste bandiere dopo aver testato su un Nexus
EpicPandaForce

0

La risposta accettata ha funzionato per me utilizzando CollapsingToolbarLayout. È importante notare, tuttavia, che setSytstemUiVisibility()sovrascrive qualsiasi chiamata precedente a quella funzione. Quindi, se stai usando quella funzione altrove per la stessa vista, devi includere View.SYSTEM_UI_FLAG_LAYOUT_STABLEeView.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN flag , altrimenti verranno sostituiti con la nuova chiamata.

Questo è stato il mio caso e una volta aggiunte le due bandiere nell'altro posto in cui stavo chiamando setSystemUiVisibility(), la risposta accettata ha funzionato perfettamente.


0

Aggiungerò alcune ulteriori informazioni qui. Gli ultimi sviluppi di Android hanno reso abbastanza facile gestire molti casi nella barra di stato. Di seguito sono riportate le mie osservazioni dalstyles.xml

  1. Colore di sfondo : per SDK 21+, come indicato in molte risposte, <item name="android:windowTranslucentStatus">true</item> la barra di stato sarà trasparente e mostrata davanti all'interfaccia utente. La tua attività occuperà l'intero spazio della parte superiore.
  2. Colore di sfondo : ancora una volta, per SDK 21+, <item name="android:statusBarColor">@color/your_color</item>darà semplicemente un colore alla barra di stato, senza alterare nient'altro.

  3. Tuttavia, nei dispositivi successivi (Android M / +), le icone iniziato a presentare diverse sfumature. Il sistema operativo può dare una sfumatura più scura di grigio alle icone per SDK 23 / +, se si sovrascrive il styles.xmlfile nella values-23cartella e si aggiunge <item name="android:windowLightStatusBar">true</item>.
    In questo modo, fornirai al tuo utente una barra di stato più visibile, se la tua barra di stato ha un colore chiaro (pensa a quante app di Google hanno uno sfondo chiaro ma le icone sono visibili lì in un colore grigiastro).
    Ti suggerirei di usare questo, se dai colore alla barra di stato tramite il punto 2

  4. Nei dispositivi più recenti, SDK 29 / + è dotato di un ampio sistema di temi chiari e scuri, controllabile dall'utente. Come sviluppatori, dovremmo anche sostituire il nostro file di stile in una nuova values-nightcartella, per offrire all'utente 2 esperienze diverse.
    Anche in questo caso, ho riscontrato che il punto 2 è efficace nel fornire il "colore di sfondo alla barra di stato". Ma il sistema non stava cambiando il colore delle icone della barra di stato per la mia app. dal momento che la mia versione di stile di oggi consisteva in un tema più leggero, questo significa che gli utenti soffriranno di scarsa visibilità (icone bianche su sfondo più chiaro)
    Questo problema può essere risolto utilizzando l'approccio punto 3 o sovrascrivendo il file di stile nella values-29cartella e utilizzando un nuovo api <item name="android:enforceStatusBarContrast">true</item>. Ciò imporrà automaticamente la tinta grigiastra alle icone, se il colore di sfondo è troppo chiaro.


-1

Ecco il tema che uso per realizzare questo:

<style name="AppTheme" parent="@android:style/Theme.NoTitleBar">

    <!-- Default Background Screen -->
    <item name="android:background">@color/default_blue</item>
    <item name="android:windowTranslucentStatus">true</item>

</style>

1
Ci sono alcuni strani downvoter. Anche se una soluzione fosse giusta per te e per qualche altra persona, declasseranno invece di passare a un'altra risposta.
CoolMind,

Tutto quello che chiedo è una spiegazione. Non penso che le persone dovrebbero essere in grado di effettuare il downgrade del voto senza una spiegazione.
Droid Chris,

Lo penso anche io.
CoolMind il

Spiegherò che l'opzione in background non funziona correttamente in questo pacchetto. Correggi la tua risposta per favore.
Morozov,

Hmmm ... in quale versione di Android stai facendo questo? Sto usando questa configurazione in Android M.
Droid Chris

-3

La soluzione giusta è quella di cambiare una proprietà in XML sotto il tag Activity allo stile seguente. Funziona e basta

  android:theme="@style/Theme.AppCompat.Light.NoActionBar"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.