2017-07-28 1 views
0

Snackbar Breite entspricht der vollen Breite in Handys, aber es nicht setzen match_parent beim Ausführen in Tablet. Bitte helfen Sie mir-Code ist unterBenutzerdefinierte Snackbar Breite ist nicht einstellbar MATCH_PARENT in Tabletten

final Snackbar mSnackbar = Snackbar.make(view, "", Snackbar.LENGTH_LONG); 
LayoutInflater inflater = (LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
Snackbar.SnackbarLayout layout = (Snackbar.SnackbarLayout) mSnackbar.getView(); 
layout.setPadding(0,0,0,0); 
TextView textView = (TextView) 
layout.findViewById(android.support.design.R.id.snackbar_text); 
textView.setVisibility(View.INVISIBLE); 
snackView = inflater.inflate(R.layout.snackbar_layout, null); 
layout.addView(snackView, 0); 
+0

Design, das insbesondere xml für Tablet sperately und gibt Breite 'match_parent' –

+0

, die auch nicht funktionieren. Sein Standardverhalten von Snackbar. lassen Sie mich wissen, wenn Sie eine andere Idee haben. – Darsy

+0

Layout-Parameter von Snackbar erhalten und die Breite so einstellen, dass sie zum übergeordneten Element passt –

Antwort

0

ich denke, das ist das Standardverhalten von snackbar auf tablets.for Weitere Informationen look here

-1

Verwenden Sie den folgenden Code ist!;

Snackbar snackbar = Snackbar 
        .make(put_your_parent_layout_id, "Try again!", Snackbar.LENGTH_LONG) 
        .setAction("RETRY", new View.OnClickListener() { 
         @Override 
         public void onClick(View view) { 
         } 
        }); 
      snackbar.setActionTextColor(Color.RED); 
      View sbView = snackbar.getView(); 
      TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text); 
      textView.setTextColor(Color.YELLOW); 
      snackbar.show(); 
+0

Bitte bearbeiten Sie Ihre Frage und erklären Sie, ** im Detail **, wie dies die Frage behandelt. Was beeinflusst beispielsweise die Breite der Snackbar? – CommonsWare

+0

Es wird die gleiche Breite wie die Elternlayoutbreite nehmen. Ich habe das bereits in Code geschrieben. –

+0

Der erste Parameter zu 'make()' ist keine Layout-ID. Es ist eine 'Ansicht'. Diese "Ansicht" wird nur verwendet, um das "CoordinatorLayout" zu finden, in das die "Snackbar" geht (oder die Dekoransicht des Fensters, wenn es kein "CoordinatorLayout" gibt). Die übergebene "Ansicht" wird für nichts anderes verwendet und hat keinen Einfluss auf die Breite der "Snackbar". Siehe [Quellcode] (https://github.com/android/platform_frameworks_support/blob/master/design/src/android/support/design/widget/Snackbar.java#L132-L149). – CommonsWare

0

Verwenden folgenden Code-Schnipsel in voller Breite im Tablet-Landscape-Modus zu unterstützen:

Snackbar snackbar = Snackbar.make(view, "Sample Text", Snackbar.LENGTH_LONG) 
        .setAction("Sample Text", new View.OnClickListener() { 
         @Override 
         public void onClick(View view) { 

         } 
        }); 
      (snackbar.getView()).getLayoutParams().width =ViewGroup.LayoutParams.MATCH_PARENT;; 
      snackbar.show(); 
Verwandte Themen