2016-12-31 3 views
0

Ich habe einen AlertDialog deren Titel soll etwas sein, wieWie "Ellipsen" den Titel eines AlertDialog in der Mitte?

Copying „xxx“ zu ...

Bei xxx eine sehr lange Zeichenfolge ich es sein möchte verkürzt statt des ganzen Titels: Wichtig ist, dass der "zu ..." Teil sichtbar ist!

Um ein Beispiel zu machen, wenn xxx == "A very long text here is being displayed!" ich den Titel des Alertdialog sein wollen:

Copying "hier ein sehr langer Text ist bein ..." zu ...

Wie es geht?

+0

Sie benötigen das Zitat als auch? zB: "xxxxxxxxxxbein .." zu ....... –

+0

@Charuka ja, ich brauche es genau so, wie es im Text steht, den ich geschrieben habe! – Robb1

+0

grundlegende Java nichts anderes lassen Sie mich schnell etwas tun –

Antwort

2

Logic = eine Zeichenkette nehmen> die Länge bestimmen, die angezeigt werden soll> die Länge der Zeichenkette überprüfen> unerwünschte Zeichen entfernen, um die gewünschte Länge beizubehalten> neue Zeichensätze mit anderen Zeichen zurücksetzen, die Sie hinzufügen müssen> setzen es als Kopf!

String headText = "add anything you want here as head"; 


     String newHead; 
     int maxCharYouWant= 25; // your word limit to display 

     if(headText.length()>25){ 
      newHead = headText.substring(0, Math.min(headText.length(), 18)); // Get the first N number of words-> here 18 
      newHead = "\""+newHead+".."+"\""+"to.."; // reset with your format 
     }else { 
      newHead = headText; // length is ok no need to change it 
     } 


     LayoutInflater inflater = getLayoutInflater(); 
     View dialogLayout = inflater.inflate(R.layout.body_layout, null); // for body 

     AlertDialog.Builder builder = new AlertDialog.Builder(Test.this); 
     TextView textView = new TextView(Test.this); 
     textView.setText(newHead); 
     builder.setCustomTitle(textView);// set your heading 

     builder.setView(dialogLayout); 
     builder.show(); 

Edit: Um die Anzahl der Zeichen für den Bildschirm erhalten Sie eine gewisse Methode wie folgt verwenden können (ich dies für 1080 auf mehrere Vermächtnisse nicht getestet habe es 32 gibt .. können Sie versuchen und sehen)

Display display = getWindowManager().getDefaultDisplay(); 
     Point size = new Point(); 
     display.getSize(size); 

     DisplayMetrics metrics = getResources().getDisplayMetrics(); 
     int width = (int)((float)size.x/metrics.scaledDensity); 

     TextView textView = new TextView(Test.this); 
     int totalCharstoFit= textView.getPaint().breakText(headText, 0, headText.length(), true, width, null); 

Lesen Sie mehr über breakText

+0

Danke @Charuka. Mein Problem ist auch, dass ich den Platz auf dem Bildschirm des Smartphones nicht kenne. Daher kann ich 'int maxCharYouWant = 25;' nicht verwenden. Irgendwelche Vorschläge, um dieses Problem zu lösen? – Robb1

+0

@ Robb1 jeder Weg, auch wenn Sie 1000 Zeichen hinzufügen, beachten Sie, dass ich den Kopf hinzufügen, indem Sie eine 'textView' so wenn nicht genug Platz in der ersten Zeile für den Kopf wird es die zweite .. dritte .. wie klug gehen –

+0

lesen Sie dies auch http://StackOverflow.com/A/10464760/5188159 –

Verwandte Themen