1

我必须显示帮助信息,如何使用程序的说明,我选择了使用带有 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/

4

1 回答 1

1

如果它不适合屏幕, AnAlertDialog会自动使其内容可滚动。无需夸大您的自定义 XML 布局,只需将文本设置为带有.builder.setText()builder.setMessage()

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()因为我认为它没用。

于 2013-05-03T01:13:36.640 回答