Android - Как сделать это диалоговое окно предупреждений прокручиваемым?

Я начинаю работать в android и создаю свое первое приложение для Android. мой пункт меню "О программе", когда щелкнут, показывает alertdialog с действительно длинным сообщением. Я пробовал разные методы, чтобы сделать его прокручиваемым, но я не мог. Я пробовал читать разные вопросы о stackoverflow, но они не работали для меня. Вот мой код диалогового окна.

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

Может кто-нибудь объяснить мне подробно, как сделать его прокручиваемым? Любая помощь или предложения будут оценены!

Ответы

Ответ 1

Это решение взято из этого сообщения.

Чтобы прокручивать представление, он должен быть вложен внутри контейнера ScrollView:

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

Обратите внимание: контейнер ScrollView может иметь только один вид макета. Например, невозможно разместить TextView и Button в ScrollView без LinearLayout.

Ответ 2

В этой ситуации вы можете создать свой собственный файл layout.xml, содержащий текстовый вид в списке прокрутки. и установите TextMessage в этом текстовом представлении, Наполните этот макет диалоговым окном предупреждения.

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>

В классе активности

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

Ответ 3

Вы можете просто использовать подход по умолчанию:

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

  AlertDialog alert = builder.create();

  alert.show();

Вы можете заметить, что сообщение TextView является встроенным контейнером ScrollView в alert_dialog.xml. Это макет, который используется.

Местоположение этого файла post