web-dev-qa-db-fra.com

Android - Comment faire défiler cette boîte de dialogue d'alerte?

Je suis débutant dans Android et je crée ma première Android. Mon élément de menu 'À propos'), lorsque vous cliquez dessus, affiche un dialogue d'alerte avec un très long message. J'ai J'ai essayé différentes méthodes pour le faire défiler, mais je n'ai pas pu. J'ai essayé de lire différentes questions sur stackoverflow mais elles n'ont pas fonctionné pour moi. Voici mon code de dialogue d'alerte.

AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);  
alertDialog.setTitle("Title");  
alertDialog.setMessage("Here is a really long message.");  
 alertDialog.setButton("OK", null);  
 AlertDialog alert = alertDialog.create();
alert.show();

Quelqu'un peut-il m'expliquer en détail comment le faire défiler? Toute aide ou suggestion serait appréciée!

17
ashu

Cette solution est tirée de cet article .

Pour qu'une vue puisse défiler, elle doit être imbriquée à l'intérieur d'un conteneur ScrollView:

<ScrollView>
    <LinearLayout Android:orientation="vertical"
            Android:scrollbars="vertical"
            Android:scrollbarAlwaysDrawVerticalTrack="true">
        <TextView />
        <Button />
    </LinearLayout>
</ScrollView>

Notez qu'un conteneur ScrollView ne peut avoir qu'une seule vue de disposition enfant. Il n'est pas possible, par exemple, de placer un TextView et un bouton dans un ScrollView sans le LinearLayout.

25
blganesh101

Dans cette situation, vous pouvez créer votre propre fichier layout.xml contenant une vue de texte sous la vue de défilement. et définissez TextMessage dans cette vue texte, gonflez cette disposition avec votre boîte de dialogue d'alerte.

yourxmlfile.xml

<ScrollView 
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent" >

    <LinearLayout 
        Android:layout_width="fill_parent"
        Android:layout_height="fill_parent" >

    <TextView
        Android:id="@+id/textmsg"
        Android:layout_width="fill_parent"
        Android:layout_height="fill_parent"
        Android:text="@string/hello" />

    </LinearLayout>
</ScrollView>

En classe d'activité

LayoutInflater inflater= LayoutInflater.from(this);
View view=inflater.inflate(R.layout.yourxmlfile, null);

TextView textview=(TextView)view.findViewById(R.id.textmsg);
textview.setText("Your really long message.");
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);  
alertDialog.setTitle("Title");  
//alertDialog.setMessage("Here is a really long message.");
alertDialog.setView(view);
alertDialog.setButton("OK", null);  
AlertDialog alert = alertDialog.create();
alert.show();
7

Vous pouvez simplement utiliser une approche par défaut:

  AlertDialog.Builder builder = new AlertDialog.Builder(this);
  builder.setTitle("Title")
      .setMessage(message);

  AlertDialog alert = builder.create();

  alert.show();

Vous pouvez remarquer qu'un message TextView est un conteneur ScrollView intégré dans alert_dialog.xml. C'est une mise en page qui est utilisée.

L'emplacement de ce fichier est post

1
yoAlex5