2012-02-02 23 views
7

Czy w oknie dialogowym alertu systemu Android można umieścić tytuł wielowierszowy? Próbowałem kilka rozwiązań tutaj opublikowanych, ale żaden nie działał dla mnie. Zawsze kończy się tytułem z 3 kropkami (...) napisów dla tytułu. Każdy przykładowy kod lub przykład dotyczący tego samego byłby bardzo ceniony.Jak zbudować okno alertu z tytułem wielowierszowym?

+0

Zapoznaj się z moją odpowiedzią i zastanów się, czy jest ona poprawna. – Radu

+0

proszę rozważyć moją odpowiedź, denerwujące jest wprowadzanie w błąd "poprawnych" odpowiedzi na SO. – Radu

Odpowiedz

1

Jeśli używasz powiadomienie okno następnie tytuł może zawierać maksymalnie 2 Linia, w przeciwnym wypadku trzeba iść z niestandardowym Dialog.

+0

Próbowałem z 3 liniami napisów tytułowych mogłem wyświetlać tylko 2, a trzeci ciąg nie był wyświetlany. – Manju

+0

Ta odpowiedź jest niepoprawna i nie powinna być akceptowaną odpowiedzią. –

2

ten sposób ustawić tytuł

AlertDialog.Builder builder = new AlertDialog.Builder(Class name.this); 
    builder.setTitle("Welcome to App,\n There are no App.\n Add a new data."); 
+4

Myślę, że nie możesz mieć więcej niż 2 linie na pasku tytułu, spróbowałem twojej próbki i udało mi się zdobyć tytuł na 2 linie i brakowało trzeciej linii. Co jeśli pierwszy ciąg ma więcej niż 30 znaków? – Manju

20

Trzeba użyć builder.setCustomTitle():

AlertDialog.Builder builder = new AlertDialog.Builder(context); 
TextView textView = new TextView(context); 
textView.setText("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur " + 
       "tincidunt condimentum tristique. Vestibulum ante ante, pretium porttitor " + 
       "iaculis vitae, congue ut sem. Curabitur ac feugiat ligula. Nulla " + 
       "tincidunt est eu sapien iaculis rhoncus. Mauris eu risus sed justo " + 
       "pharetra semper faucibus vel velit."); 
builder.setCustomTitle(textView); 

Dokumentacja jest tutaj: AlertDialog.builder

enter image description here

+0

'setCustomTitle()' nie jest metodą 'AlertDialog.Builder'. –

+0

Przepraszam, przepraszam, masz rację. 'setCustomTitle (String)' nie istnieje, ale 'setCustomTitle (View)', jak użyłeś, robi. –

+0

Tak, działało idealnie. Dzięki!! –

0

Faktycznie "correct" odpowiedzieć tu jest nie tak. Okazuje się, że możesz ustawić maksymalne linie na więcej niż 2 w AlertDialog. Oto przykład:

AlertDialog closePlayerDialog; 
......... 
Builder builder = new AlertDialog.Builder(this); 
builder.setMessage(getString(R.string.AskToClosePlayer)) 
     .setPositiveButton(R.string.Yes, dialogClickListener) 
     .setNeutralButton(R.string.NoJustCloseApp, dialogClickListener) 
     .setNegativeButton(R.string.NoContinue, dialogClickListener); 
closePlayerDialog = builder.create(); 
closePlayerDialog.setOnShowListener(new DialogInterface.OnShowListener() { 
    public void onShow(DialogInterface dialog) { 
     float textSize = 12.0f; 
     Button positive = closePlayerDialog.getButton(AlertDialog.BUTTON_POSITIVE); 
     positive.setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSize); 
     positive.setMaxLines(3); 
     Button neutral = closePlayerDialog.getButton(AlertDialog.BUTTON_NEUTRAL); 
     neutral.setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSize); 
     neutral.setMaxLines(3); 
     Button negative = closePlayerDialog.getButton(AlertDialog.BUTTON_NEGATIVE); 
     negative.setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSize); 
     negative.setMaxLines(3); 
    } 
}); 
closePlayerDialog.setCancelable(false);  
closePlayerDialog.show(); 

Zasadniczo edycję komponentów AlertDialog za onShow, wykorzystujące DialogInterface.onShowListener.

+0

Nie pokazałeś, jak zmienić liczbę linii tytułu, ale przycisków. Nie ma 'dialog.getTitleBar' lub podobnego? –

+0

@ LuisA.Florit Właściwie masz rację Luis. W takim przypadku możesz usunąć domyślny pasek tytułu, dokładnie tak, jak chcesz, a następnie umieścić własny niestandardowy widok tekstowy u góry niestandardowego układu. Wiersz, od którego chcesz usunąć istniejący pasek tytułu, to: dialog.requestWindowFeature (Window.FEATURE_NO_TITLE); – Radu

Powiązane problemy