web-dev-qa-db-ja.com

AndroidのAlertDialogに垂直スクロールバーを追加しますか?

テキストが長すぎて1つの画面に表示できないため、AlertDialogに垂直スクロールバーを追加したいと思います。

私は使用しようとしました:

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

しかし、スクロールバーは表示されませんか?

これが私が使用しているxmlレイアウトファイルです:

<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>

私はAlertsDialogを次のように呼び出します:

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();
 }

私は今答えを見つけました=>それはこれで今働きます:

<?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>
20
Hubert

ビューをスクロール可能にするには、ビューをScrollViewコンテナ内にネストする必要があります。

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

ScrollViewコンテナは、子レイアウトビューを1つだけ持つことができることに注意してください。たとえば、TextViewなしでButtonScrollViewLinearLayoutに配置することはできません。

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());
15
Melbourne Lopes

これを使用すると機能します:

 .setScrollable(true)

AlertDialogBoxまたは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