AlertDialog中的自定义列表视图隐藏了对话框的消息?

时间:2012-12-27 13:22:14

标签: android alertdialog android-alertdialog

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

实施如下:

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

任何帮助都表示赞赏.... :-)

2 个答案:

答案 0 :(得分: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>

爪哇

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

答案 1 :(得分:0)

我建议使用上面公开的相同方式,,而不是使用基本Dialog类,DialogFragment类在设备状态发生变化时保持其状态(旋转/键盘...) 希望它有帮助...;)