2015-06-19 5 views
7

Sto tentando di mostrare una barra degli snack (tramite appcompat) per visualizzare un messaggio all'utente. Funziona perfettamente bene sui telefoni, ma su tavole sto ottenendoAppCompat Snackbar non centrata sul tablet

portrait

e

landscape

Il codice che sto usando per generare lo snack bar è

Snackbar.make(mHomeContainer, R.string.rate_snackbar, Snackbar.LENGTH_LONG) 
     .setAction("Rate", ...) 
     .show(); 

Qualsiasi consiglio su come rendere centrato questo snack bar sarebbe molto apprezzato

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

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

    <View 
     android:id="@+id/status_bar" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:background="@color/main" 
     android:elevation="8dp"/> 

    <include layout="@layout/toolbar" /> 

    <RelativeLayout 
     android:id="@+id/home_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <FrameLayout 
      android:id="@+id/main_content" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_alignParentBottom="true" /> 

     <ListView 
      android:id="@+id/home_search_list" 
      android:visibility="gone" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="#88000000"/> 

    </RelativeLayout> 
</LinearLayout> 

<include layout="@layout/navigation_list" /> 

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

Snacker non dovrebbe essere di grande ampiezza su tablet/desktop secondo [questo] (http://www.google.com/design/spec/components/snackbars -toasts.html # snackbar-brindisi-specs). – wwang

+0

grazie, Ive l'ha aggiornato per dire centrato invece che a larghezza intera –

+0

Che cos'è 'mHomeContainer'? 'MHomeContainer' riempie l'intera larghezza dello schermo? – ianhanniballake

risposta

6

È necessario utilizzare il CoordinatorLayout per fare in modo che ciò accada. Ecco un article che descrive come farlo. Inoltre, è probabile che ora sia necessario fornire i file di layout che si desidera utilizzare per tablet e tablet in modo che sia possibile conservare la larghezza completa per i telefoni. Questo è anche il componente di layout che è necessario utilizzare se si utilizza una combinazione di FAB, barra delle applicazioni e Snackbar.

+0

che era esattamente così, grazie mille –

+0

Cosa succede se ho frammenti annidati in qualche frammento - uno a sinistra e uno a destra. E al clic su un elemento a sinistra vorrei mostrare uno snack bar in basso al centro di una finestra? Devo aggiungere il layout del coordinatore nel frammento genitore in fondo e fare clic su un elemento devo passare al richiamo del frammento genitore che dovrebbe essere mostrato lo snack bar? Non molto utile, anche se – krossovochkin

+0

Sembra che tu stia rompendo i principi generali di Material Design. Forse il messaggio dovrebbe essere all'interno del frammento o è qualcosa per cui Toast è meglio, a seconda di cosa stai cercando di realizzare? Non ho provato a utilizzare più CoordinatorLayouts, ma forse è possibile per te? – AkiAki007