Android - 如何使此警报对话框可滚动?

时间:2013-06-06 06:24:59

标签: android android-alertdialog

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

有人可以详细解释我如何使其可滚动吗? 任何帮助或建议将不胜感激!

4 个答案:

答案 0 :(得分:24)

此解决方案来自this post

为了使视图可滚动,它必须嵌套在ScrollView容器中:

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

请注意,ScrollView容器只能有一个子布局视图。例如,在没有LinearLayout的情况下将TextView和Button放在ScrollView中是不可能的。

答案 1 :(得分:7)

在这种情况下,您可以在Scroll View下创建自己的包含文本视图的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();

答案 2 :(得分:1)

您可以使用默认方法:

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

  AlertDialog alert = builder.create();

  alert.show();

您可以注意到一条消息TextView是alert_dialog.xml中的内置ScrollView容器。这是一个使用的布局。

此文件的位置为post

答案 3 :(得分:0)

或者你可以通过编程来完成。如果您需要非标准对话框,这将特别有用。 (例如,在下面的示例中,除了我的消息之外,我还想添加一个 EditText 字段。)您也可以像往常一样添加按钮。

final ScrollView myScroll = new ScrollView(this);
        final TextView myText = new TextView(this);
        myText.setText("Put really long text here.");
        myText.setPadding(30, 5, 30, 0); //or whatever you want
        final LinearLayout myView = new LinearLayout(this);
        myView.setOrientation(LinearLayout.VERTICAL);
        final EditText input = new EditText(this);
        input.setInputType(InputType.TYPE_CLASS_TEXT );
        myView.addView(myText);
        myView.addView(input);
        myScroll.addView(myView);
        builder.setView(myScroll);