2012-05-28 15 views

Odpowiedz

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

dostał go od android:set title bar in middle

+6

To jest hack. Prawdopodobnie pęknie. – pjv

+0

Zgadzam się, zrywa z 3.0+, ale działa też ze starszymi :) – xmen

-3

Spróbuj użyć android:ellipsize

Patrz android:ellipsize na stronie Android Developers.

+0

nie można go używać na tytuł działania, czy możesz? – xmen

21

Można to zrobić:

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

nie działa, nie sądzę, że actionbar istnieje w Androidzie 1.6 – xmen

+1

Nie widzę 1.6 w twoim pytaniu. Powinien to być ten sam, ale inny identyfikator, spróbuj go znaleźć za pomocą przeglądarki hierarchii. –

+3

To też jest hack. Prawdopodobnie pęknie. Przynajmniej sprawdź pod kątem zer i wyjątków catch. – pjv

0

jeśli użytkownik Toolbar można dodać tę funkcję przed 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) { 
    } 
} 
Powiązane problemy