2010-08-26 9 views
2

Ok donc j'ai lu l'explication de dialogue personnalisée sur le site et Dev http://developer.android.com/guide/topics/ui/dialogs.html#CustomDialogAndroid: Comment créer un dialogue avec un titre défilant?

Il est vous montrer comment faire une boîte de dialogue personnalisée, mais pas la façon de personnaliser le titre!

Fondamentalement, mon titre est trop long et je veux qu'il défile (comme textview) ou mieux avoir un effet de «marquee», je pense que ça s'appelle. Ou si je ne peux pas le faire défiler, donnez-lui plus d'espace pour l'enrouler sur plus de lignes!

Toutes les idées, je ne tiens pas beaucoup d'espoir que ce n'est pas sur android.dev :-(

Répondre

6

fenêtre Customizig titres (et donc aussi de dialogue) peut se faire en demandant la fonction de fenêtre CUSTOM_TITLE, qui doit . faire avant setContentView

donc dans votre boîte de dialogue/sous-activité onCreate(), appelez ce qui suit:

super.onCreate(savedInstance); 
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); // <- insert this 

Ensuite, après votre setContentView, faites ceci:

setContentView(R.layout.main); 
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title); // <- insert this 

La disposition peut généralement contenir tout ce que vous voulez. Pour un contrôle de texte de sélection. par exemple. faire:

layout/custom_title.xml:

<FrameLayout android:id="@+id/FrameLayout01" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    > 
    <TextView android:id="@+id/caption_text" 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:text="This is a very very long text that will not fit into a caption regularly, so it will be displayed using marquee..." 
     android:lines="1" 
     android:focusable="true" 
     android:focusableInTouchMode="true" 
     android:scrollHorizontally="true" 
     android:marqueeRepeatLimit="marquee_forever" 
     android:ellipsize="marquee" 
     ></TextView> 
</FrameLayout> 

En raison de certaines contraintes avec la fonction marquee, l'affichage de texte doit être fait focalisable et il ne sera défilement quand concentré (ce qui devrait d'abord être).

+0

merci - je vais essayer plus tard – Blundell

+0

si je dois utiliser setTitle (myString); dans mon activité ?? – Kishore

7

Vous pouvez faire le titre de dialogue multiligne:

TextView title = (TextView) dialog.findViewById(android.R.id.title); 
title.setSingleLine(false); 
+0

Je pense que cette réponse est un peu mieux que de sous-classer la boîte de dialogue lorsque cela n'est pas nécessaire. –

0

Je considère une combinaison de ce RuslanK (pour obtenir la TextView) Thorstenvv de (pour faire TextView scrollable) réponse à la meilleure pratique.

Questions connexes