自定义AlertDialog ScrollView,在2.3缺少ok按钮时太大了

时间:2013-05-03 00:29:55

标签: android scrollview alertdialog android-2.3-gingerbread

我必须显示帮助信息,如何使用该程序的说明,我已经使用带有ScrollView的自定义XML选择了AlertDialog。 我在平板电脑,xperia neo和2个虚拟设备上进行了测试。其中3个很好,但在2.3小屏幕中,对话框太大,可视化中有一个错误,很难关闭。知道为什么吗? 这是我的代码: ScrollView的XML:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
    <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" 
    android:textSize="10sp">
    </TextView>
</ScrollView>`

我的代码叫它:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage(R.string.msg_help)
           .setCancelable(false)
           .setView(LayoutInflater.from(this).inflate(R.layout.dialog_scrollable,null))
           .setTitle(R.string.help_title)
           .setPositiveButton("OK", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                    //do things
               }
           });
    AlertDialog alert = builder.create();
    alert.getWindow().setLayout(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    alert.show();

以下是它的外观:http://postimg.org/image/wvg61x0qv/

1 个答案:

答案 0 :(得分:1)

AlertDialog如果内容不适合屏幕,则会自动滚动内容。您只需使用 builder.setText() builder.setMessage()将文本设置到对话框,而不是夸大自定义XML布局。

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(R.string.msg_help)
       .setCancelable(false)
       .setTitle(R.string.help_title)
       .setMessage(R.string.help)
       .setPositiveButton("OK", new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int id) {
                //do things
           }
       });
AlertDialog alert = builder.create();
alert.show();

请注意,我也删除了alert.getWindow().setLayout()行,因为我觉得它没用。