在AlertDialog中使用自定义Listview会隐藏对话框的消息?

3

我正在开发一个应用程序,其中有一个在AlertDialog中填充的列表。 在某些事件发生时,对话框出现,显示其TitleMessageCustom listview。 问题是,当我在列表中添加超过4个条目时,被设置的对话框消息会被列表视图隐藏。 我想展示列表视图在消息下方,无论列表有多长。 有人能帮我吗?

实现如下:

AlertDialog.Builder builder = new AlertDialog.Builder(xActivity.this);
     builder.setTitle("Title");
     builder.setMessage("Following items are in the List");                 
     final ListView modeList = new ListView(xActivity.this);
     ArrayAdapter<String> modeAdapter = new ArrayAdapter<String>(xActivity.this, android.R.layout.simple_list_item_1, android.R.id.text1, simpleArray);
     modeList.setAdapter(modeAdapter);
     modeList.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
     builder.setView(modeList);
     builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {

     public void onClick(DialogInterface arg0, int arg1) {

    // Do Something

    }
}});

final Dialog dialog = builder.create(); 
dialog.show();

非常感谢您的帮助.... :-)


警告对话框有特定的长度。如果列表的长度超过了特定的数量,它将超出消息。解决这个问题的一个好方法是创建类似活动的对话框。 - Sahil Mahajan Mj
使用标准的AlertDialog时,您只能选择其中一个消息或列表,而不能同时存在。因此,您应该使用自定义对话框或自定义视图来创建您的警告对话框。 - Ridcully
2个回答

3
我建议并认为最好的方法是创建自定义对话框而不是预定义的AlertDialog。创建您自己的XML。 http://developer.android.com/guide/topics/ui/dialogs.html
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tvMessage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Following items are in the List"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <ListView
        android:id="@+id/lvList"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1.15" >
    </ListView>

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Yes" />

</LinearLayout>

Java

Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.dialog_listview);

Button btn = (Button) dialog.findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener(){

    public void onClick(View arg0) {
        dialog.cancel();
        }    
});

dialog.show();

0

我建议使用上面提到的相同方式,只是不要使用基本的Dialog类,而是使用DialogFragment类,它在设备状态改变(旋转/键盘...)时保持其状态。希望能有所帮助... ;)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接