68 votes

Dialogue personnalisé sur Android: comment centrer son titre?

Je développe une application Android.

Comment centrer le titre d'une boîte de dialogue personnalisée que j'utilise?

Merci.

115voto

LandL Partners Points 674

Une autre façon de procéder par programme consiste à utiliser setCustomTitle ():

 // Creating the AlertDialog with a custom xml layout (you can still use the default Android version)
AlertDialog.Builder builder = new AlertDialog.Builder(this);
LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.viewname, null);
builder.setView(view);

TextView title = new TextView(this);
// You Can Customise your Title here 
title.setText("Custom Centered Title");
title.setBackgroundColor(Color.DKGRAY);
title.setPadding(10, 10, 10, 10);
title.setGravity(Gravity.CENTER);
title.setTextColor(Color.WHITE);
title.setTextSize(20);

builder.setCustomTitle(title);
 

58voto

ChrisJD Points 1669

Je viens de trouver ce post en essayant de comprendre comment faire la même chose. Voici comment je l'ai fait pour quiconque trouve cela dans le futur.

Le style xml est le suivant:

     <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <style name="PauseDialog" parent="@android:style/Theme.Dialog">
            <item name="android:windowTitleStyle">@style/PauseDialogTitle</item>
        </style>

        <style name="PauseDialogTitle" parent="@android:style/TextAppearance.DialogWindowTitle">
            <item name="android:gravity">center_horizontal</item>
        </style>
        <style name="DialogWindowTitle">
        <item name="android:maxLines">1</item>
        <item name="android:scrollHorizontally">true</item>
        <item name="android:textAppearance">@android:style/TextAppearance.DialogWindowTitle</item>
        </style>
    </resources>
 

Et dans mes activités onCreateDialog pour la boîte de dialogue que je veux styler, je crée la boîte de dialogue comme suit:

 Dialog pauseDialog = new Dialog(this, R.style.PauseDialog);
pauseDialog.setTitle(R.string.pause_menu_label);
pauseDialog.setContentView(R.layout.pause_menu);
 

8voto

Hesam Points 6415

Vous pouvez aussi le faire en code. Supposons que vous ayez un fragment de dialogue, puis ajoutez les lignes de code suivantes.

 @Override
public void onStart()
{
    super.onStart();

    TextView textView = (TextView) this.getDialog().findViewById(android.R.id.title);
    if(textView != null)
    {
        textView.setGravity(Gravity.CENTER);
    }
}
 

1voto

Arhimed Points 18116

Si vous n'appelez pas AlertDialog.Builder.setIcon() et AlertDialog.Builder.setTitle() , votre boîte de dialogue personnalisée ne montrera pas la vue de titre intégrée / par défaut. Dans ce cas, vous pouvez ajouter votre titre personnalisé Voir:

 AlertDialog.Builder.setView(View view)
 

Dès que c'est vous qui créez cette vue, il est possible d'implémenter tout type d'alignement.

0voto

Vuk Points 1043

Vous avez quelques astuces de départ pour modifier le titre d'une boîte de dialogue: http://stackoverflow.com/questions/820398/android-change-custom-title-view-at-run-time/866184#866184 Don't savoir si elle peut être centrée (je n'ai pas essayé), mais si c'est une vue personnalisée, je suppose que c'est très possible.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X