问题
I am beginner in android and making my first android app. my 'About' menu item, when clicked shows an alertdialog with a really long message. I have been trying different methods to make it scrollable but i couldn't. I have tried reading different questions on stackoverflow but they didn't worked for me. Here is my alert dialog code.
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();
Can anybody explain me in detail that how to make it scrollable? Any help or suggestions would be appreciated !
回答1:
This solution is take from this post.
In order for a view to scrollable, it must be nested inside of a ScrollView container:
<ScrollView>
<LinearLayout android:orientation="vertical"
android:scrollbars="vertical"
android:scrollbarAlwaysDrawVerticalTrack="true">
<TextView />
<Button />
</LinearLayout>
</ScrollView>
Note that a ScrollView container can only have one child layout view. It is not possible, for example, to place a TextView and Button in a ScrollView without the LinearLayout.
回答2:
In that situation you can create your own layout.xml file containing a Text View under Scroll View. and set TextMessage in this Text View, Inflate this layout with your alert dialog box.
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>
In Activity Class
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:
You can just use a default approach:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Title")
.setMessage(message);
AlertDialog alert = builder.create();
alert.show();
You can notice that a message TextView is built-in ScrollView container in alert_dialog.xml. It is a layout that is used.
The location of this file is post
来源:https://stackoverflow.com/questions/16955053/android-how-do-i-make-this-alert-dialog-scrollable