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