[英]Removing blank space at bottom of dialog list
当您打开对话框窗口时,它具有5个选项下方的空白...在Eclipse中的DumpView层次结构内部,它表示是(2)FrameLayout [34,894] [686,1022]。
我的代码是:
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.sync_frequency);
ListView listView = new ListView(getActivity());
String[] syncOptions = mSyncOptions;
ArrayAdapter<String> modeAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.select_dialog_singlechoice, android.R.id.text1, syncOptions);
builder.setSingleChoiceItems(modeAdapter, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
int selectedPosition = ((AlertDialog)dialog).getListView().getCheckedItemPosition();
Log.d(TAG, "Position is " + selectedPosition);
}
});
builder.setView(listView);
builder.setNegativeButton(R.string.sync_cancel,null);
final Dialog dialog = builder.create();
dialog.getWindow().setLayout(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
dialog.show();
我试图摆脱那里的空白...我不确定如何摆脱它...我什至尝试了dialog.getWindow().setLayout(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
但这并没有切断空间。 我猜是因为它把它看作是framlayout,而不是空白。 谢谢!
您是否尝试过将布局参数设置为listView(在放大为对话框之前)?
ListView listView = new ListView(getActivity());
listView.setLayout(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
.
.
.
builder.setView(listView);
另一个选择是不在对话框上使用setView,而是在下面的示例中使用setAdapter():
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.sync_frequency);
ListView listView = new ListView(getActivity());
String[] syncOptions = mSyncOptions;
ArrayAdapter<String> modeAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.select_dialog_singlechoice, android.R.id.text1, syncOptions);
builder.setAdapter(modeAdapter, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.setNegativeButton(R.string.sync_cancel,null);
final Dialog dialog = builder.create();
dialog.show();
这仅在API级别10+设备上发生。
要使用没有这些空间问题的旧对话框主题,请像这样初始化AlertDialog.Builder:
AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(getActivity(), android.R.style.Theme_Dialog));
通过完全忽略其setAdapter(),我已成功删除了AlertDialog列表末尾的多余空间。
我创建一个ListView,并在对其调用builder.setView()之前直接在其上设置Adapter和OnListItemClickListener。
我不知道为什么会这样,所以它可能会在其他设备上损坏-希望不会造成灾难性的后果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.