2010-08-04 13 views
2

J'ai une activité en cours d'exécution en tant que Theme.Dialog. Puis-je définir son titre sur un style "ellipsize"? Actuellement, le texte est rempli dans onCreate() avec setText(). Il n'y a pas this.setEllipsize() comme sur TextView.Puis-je ellipsiser un titre de boîte de dialogue?

Ou, est ma seule option pour écrire a Custom Dialog et définir le style de titre là? J'aimerais savoir si c'est possible avant de s'engager dans cette voie.

+0

Pourriez-vous passer le titre à la boîte de dialogue déjà ellipsized? –

+0

Bien sûr, mais alors je devrais faire quelque chose comme calculer la largeur de la boîte de dialogue pour divers écrans Android, non? Je calcule le nombre maximal de caractères qu'un écran peut afficher, puis ellipse les 3 derniers caractères en points. – GJTorikian

Répondre

1

L'aide du code ci-dessous vous ellipsize le textview ...

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setCustomTitle(GetDialogTitleView(this,R.string.TitleStr)); 

private static TextView GetDialogTitleView(Context mContext,int TitleResID) 
    { 

     TextView title = new TextView(mContext); 
     title.setText(TitleResID); 
     title.setBackgroundColor(Color.DKGRAY); 
     title.setPadding(5, 5, 5,5); 
     title.setGravity(Gravity.CENTER); 
     title.setTextColor(Color.WHITE); 
     TruncateAt ta = TruncateAt.MIDDLE; 
     title.setEllipsize(ta); 
     title.setTextSize(20); 
     return title; 
    } 
4

Clean & facile sans des vues personnalisées:

TextView tv = (TextView) dialog.findViewById(android.R.id.title); 
tv.setEllipsize(TextUtils.TruncateAt.END); 
+1

Je viens d'utiliser ce code dans une application fonctionnant sur un Nexus7 avec Android 4.3. Cela fonctionne, MAIS parfois j'ai quelques caractères après les points de suspension dans le titre de la boîte de dialogue. Ceci est très probablement un autre cas de [Problème 882] (https://code.google.com/p/android/issues/detail?id=882), # 9 il existe une solution de contournement: 'tv.setLines (1); tv.setHorizontallyScrolling (true); 'm'a également aidé ici. Maintenant tout fonctionne comme un charme. – Nantoka