2015-08-26 11 views
19

Wyświetlany jest pasek przekąski z dość długą wiadomością tekstową, a na telefonie w trybie portretowym wygląda dobrze.Jak zapobiec przycinaniu mojego tekstu paska z przekąskami na urządzeniu z systemem Android?

Phone Portrait mode

Ale na tablecie wydaje pozwolić tylko 1 wiersz tekstu tak robi wielokropka-ed

Tablet Landscape mode

Czy mimo to mogę go mieć 2 linia w tabletce krajobraz?

+3

zgodnie z projektem wytycznych bufetów nie powinna zawierać dużo tekstu, snackbar powinien wyświetlić pojedynczą małą linię tekst. https://www.google.com/design/spec/components/snackbars-toasts.html# okno dialogowe jest lepiej dopasowane tutaj – tyczj

Odpowiedz

23

Można odwołać bistrem za TextView tak:

TextView tv = (TextView) view.findViewById(android.support.design.R.id.snackbar_text); 

A potem pracować na samej TextView zmieniając jego linie Max:

tv.setMaxLines(3) 
+2

Nie można uzyskać odwołania do widoku tekstowego SnackBar. Otrzymuję NULL z tego oświadczenia. –

+1

@zulkarnainshah spójrz na moją odpowiedź - wyjaśniłem wszystko –

3

Bardziej skomplikowane i dokładne przykład z kontekstu byłoby to:

// Create on click listener 
final OnClickListener positiveButtonClickListener = new OnClickListener() 
{ 
    @Override 
    public void onClick(View v) 
    { 
    // Do your action - e.g. call GooglePlay to update app 
    openGooglePlayAppUpdate(); 
    } 
}; 

// Create snack bar instance 
Snackbar sBar = Snackbar.make(findViewById(R.id.some_view_to_bind), // You bind here e.g. layout, or form view 
           R.string.snack_bar_message, 
           Snackbar.LENGTH_INDEFINITE) 
         // Set text and action to the snack bar 
         .setAction(android.R.string.ok, positiveButtonClickListener); 

// Now get text view of your snack bar ... 
TextView snckBarTv = (TextView) offerUpdate.getView().findViewById(android.support.design.R.id.snackbar_text); 
snckBarTv.setMaxLines(5); // ... and set max lines 
sBar.show(); // and finally display snack bar ! 
7

Co jest ważne, a nie podane w innych odpowiedziach, to musisz użyć Snackbar's view.

Więc:

Snackbar snackbar = Snackbar.make(rootView, R.string.message, Snackbar.LENGTH_LONG); 
View snackbarView = snackbar.getView(); 
TextView snackTextView = (TextView) snackbarView 
.findViewById(android.support.design.R.id.snackbar_text); 
snackTextView.setMaxLines(2); 
snackbar.show(); 

Uwaga: to może również pomóc w urządzeniach o gęstości niższej ekranem

Powiązane problemy