web-dev-qa-db-de.com

Hinzufügen einer vertikalen Bildlaufleiste zu einem AlertDialog in Android?

Ich möchte einem AlertDialog eine vertikale Bildlaufleiste hinzufügen, da mein Text zu lang ist, um auf einem Bildschirm angezeigt zu werden:

Ich habe versucht zu verwenden:

Android:scrollbars="vertical" 
Android:scrollbarAlwaysDrawVerticalTrack="true"

aber die Bildlaufleisten werden nicht einmal angezeigt?

Hier ist die XML-Layoutdatei, die ich verwende:

<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:orientation="vertical"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:scrollbars="vertical"
    Android:scrollbarAlwaysDrawVerticalTrack="true"
    Android:id="@+id/instructions_view" >
    <TextView
        Android:id="@+id/TextView01"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="A LONG TEXT 1"/>

    <TextView 
        Android:id="@+id/TextView02"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:text="A LONG TEXT 2"/>

</LinearLayout>

Ich rufe den AlertsDialog auf mit:

public void onClick(View v) {
  switch(v.getId()){

    case R.id.Button_Instructions: 
     InstructionsDialog();
    break;

    case R.id.Button_Exit: 
     ExitDialog();
    break;
    }
 }

public void InstructionsDialog(){

  AlertDialog.Builder ad = new AlertDialog.Builder(this);
  ad.setIcon(R.drawable.icon);
  ad.setTitle("Instructions ...");
  ad.setView(LayoutInflater.from(this).inflate(R.layout.instructions_dialog,null));

  ad.setPositiveButton("OK", 
    new Android.content.DialogInterface.OnClickListener() {
     public void onClick(DialogInterface dialog, int arg1) {
      // OK, go back to Main menu
     }
    }
   );

   ad.setOnCancelListener(new DialogInterface.OnCancelListener(){
    public void onCancel(DialogInterface dialog) {
     // OK, go back to Main menu   
    }}
   );

  ad.show();
 }

Ich habe jetzt die Antwort gefunden => ES FUNKTIONIERT JETZT MIT DIESEM:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:id="@+id/ScrollView01"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent">

    <LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:orientation="vertical"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:scrollbars="vertical"
        Android:scrollbarAlwaysDrawVerticalTrack="true"
        Android:id="@+id/instructions_view" >

        <TextView
            Android:id="@+id/TextView01"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:text="A LONG TEXT 1"/>

        <TextView
            Android:id="@+id/TextView02"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:text="A LONG TEXT 2"/>

    </LinearLayout>
</ScrollView>
19
Hubert

Damit eine Ansicht scrollbar ist, muss sie in einem ScrollView-Container verschachtelt sein:

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

Beachten Sie, dass ein ScrollView Container nur eine untergeordnete Layoutansicht haben kann. Es ist beispielsweise nicht möglich, eine TextView und eine Button in eine ScrollView ohne die LinearLayout zu platzieren.

42
John Leehey
AlertDialog dialog = new AlertDialog.Builder(this)
                .setTitle("YOUR_TITLE")
                .setMessage("YOUR_MSG")
                .setPositiveButton(Android.R.string.yes, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                })
                .setIcon(Android.R.drawable.ic_dialog_info)
                .show();
        TextView textView = (TextView) dialog.findViewById(Android.R.id.message);
        textView.setMaxLines(5);
        textView.setScroller(new Scroller(this));
        textView.setVerticalScrollBarEnabled(true);
        textView.setMovementMethod(new ScrollingMovementMethod());
13
Melbourne Lopes

Damit funktioniert es:

 .setScrollable(true)

Verwenden Sie dies in Ihrer AlertDialogBox oder Ihrem MaterialStyledDialog.

 private void gettermsandconditions() {
    final MaterialStyledDialog dialogHeader_1 =
            new MaterialStyledDialog.Builder(this)
                    .setTitle("Terms and Conditions !")
                   // .setDescription("What can we improve? Your feedback is always welcome.")
                    .setDescription(R.string.Terms_and_condition)

                    .setIcon(R.drawable.bill_icon)
                    .setStyle(Style.HEADER_WITH_ICON)
                    .setHeaderColor(R.color.colorPrimary)
                    .withDarkerOverlay(true)
                    .setScrollable(true)
                    .onPositive(new MaterialDialog.SingleButtonCallback() {
                        @Override
                        public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                          //  startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + context.getPackageName())));
                        }
                    })
                    .setNegativeText("Ok")
                    .build();
    //.setStyle(Style.HEADER_WITH_TITLE)
    dialogHeader_1.show();

}
0
Hanisha