AlertDialog主体中的scrollView不滚动

时间:2011-05-08 11:16:58

标签: android

我正在尝试在AlertDialog的消息部分中使用ScrollView。但是,我无法得到理想的结果。以下是相关的代码。如果您在构建自定义视图的方式中发现不正确的内容,请告诉我们。 TIA。

protected Dialog onCreateDialog(int id) {
    switch (id) {
    case DIALOG_SEARCH:
        dialogLayoutOuter = new ScrollView(this);
        LayoutParams scroll_lp = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
        dialogLayoutOuter.setLayoutParams(scroll_lp);
        dialogLayoutOuter.setFillViewport(true);
        dialogLayoutOuter.setVerticalScrollBarEnabled(true);

        dialogLayout = new LinearLayout(this);
        LinearLayout.LayoutParams lp_lv = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
        dialogLayout.setLayoutParams(lp_lv);            
        dialogLayout.setOrientation(LinearLayout.VERTICAL);

        int bgColor = 0xFF00FFFF;
        int bgColorBlack = 0xFF000000;
        LinearLayout.LayoutParams lp_divider = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,2);
        LinearLayout.LayoutParams lp_text = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);
        LinearLayout.LayoutParams lp_lv1 = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
        ListIterator<ListView> itr = myListViewList.listIterator();
        while(itr.hasNext()) {
            ListView lv = itr.next();
            TextView myTextView = new TextView(this);
            myTextView.setText(lv.getTag().toString());
            myTextView.setBackgroundColor(bgColor);
            myTextView.setTextColor(bgColorBlack);
            myTextView.setGravity(Gravity.CENTER);
            dialogLayout.addView(myTextView, lp_text);
            LinearLayout llDivider = new LinearLayout(this);
            llDivider.setBackgroundColor(bgColorBlack);
            dialogLayout.addView(llDivider, lp_divider);
            dialogLayout.addView(lv, lp_lv1);
        }

        AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);

        dialogLayoutOuter.addView(dialogLayout);
        dialogBuilder.setView(dialogLayoutOuter);           
        activityDialog = dialogBuilder.create();
        return activityDialog;
    }
    return null;
}

1 个答案:

答案 0 :(得分:1)

ListView在ScrollView中不起作用,因为它们都内置了滚动机制。

我建议您使用简单的LinearLayouts替换您创建的ListView。最简单的方法是创建一个xml布局,其中包含您在行中显示的所有内容以及使用ScrollView的xml布局。

使用LayoutInflater为ScrollView充气,找到要添加行的LinearLayout并将其添加到那里。最后将ScrollView设置为对话框的视图。