我正在尝试在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;
}
答案 0 :(得分:1)
ListView在ScrollView中不起作用,因为它们都内置了滚动机制。
我建议您使用简单的LinearLayouts替换您创建的ListView。最简单的方法是创建一个xml布局,其中包含您在行中显示的所有内容以及使用ScrollView的xml布局。
使用LayoutInflater为ScrollView充气,找到要添加行的LinearLayout并将其添加到那里。最后将ScrollView设置为对话框的视图。