2012-05-28 8 views

risposta

1
((TextView) ((FrameLayout) ((LinearLayout) ((ViewGroup) getWindow() 
      .getDecorView()).getChildAt(0)).getChildAt(0)).getChildAt(0)) 
      .setEllipsize(TextUtils.TruncateAt.MIDDLE); 

preso da android:set title bar in middle

+6

Questo è un hack. È probabile che si rompa. – pjv

+0

Sono d'accordo, si interrompe con 3.0+, ma funziona anche con i vecchi :) – xmen

-3

Provare a utilizzare android:ellipsize

consultare android:ellipsize nella pagina di Android Developers.

+0

cant utilizza su un titolo di attività, puoi? – xmen

21

Si può fare questo:

final int actionBarTitle = Resources.getSystem().getIdentifier("action_bar_title", "id", "android"); 
    final TextView title = (TextView)getWindow().findViewById(actionBarTitle); 
    if (title != null) { 
     title.setEllipsize(TextUtils.TruncateAt.MIDDLE); 
    } 
+0

non funziona, non penso che actionbar esista in Android 1.6 – xmen

+1

Non vedo l'1.6 nella tua domanda. Dovrebbe essere lo stesso, ma id diverso, prova a trovarlo usando hierarchyviewer –

+3

Anche questo è un hack. È probabile che si rompa. Almeno verifica la presenza di null e intercetta le eccezioni. – pjv

0

se all'utente la barra degli strumenti è possibile aggiungere questa funzione prima setTitle

private void setToolbarTextEllipsizeInMiddle(Toolbar toolbar){ 
    try { 
     toolbar.setTitle("'"); 
     for (int i = 0; i < toolbar.getChildCount(); i++) { 
      View view = toolbar.getChildAt(i); 
      if (view instanceof TextView) { 
       TextView tv = (TextView) view; 
       tv.setEllipsize(TextUtils.TruncateAt.MIDDLE); 
      } 
     }//end for i 
     toolbar.setTitle(""); 
    } catch (Exception e) { 
    } 
} 
Problemi correlati