我看到在过去的几年里,有人问过这个问题,但是答案似乎都是命中注定或错失,甚至是偶然的:很少有相同的解决方案,而且没有一种解决方案对我有用。在几乎与我相同的设置中(DialogFragment按钮从屏幕API 24及更高版本中退出),唯一的建议是使用setTitle()而不是setMessage(),但是即使我都不使用它们,滚动时我的按钮仍然消失。但是,如果对话框内容永远不需要滚动,则一切看起来都会正常。
如果我有一个没有子级的ScrollView根,或者将FrameLayout甚至CoordinatorLayout用作子级,这似乎无关紧要。我试图将多汁的layout_marginBottom添加到我的ScrollView中,但这也没有任何改变。
因此,在绝望和沮丧中,我直接吸引了stackoverflow的集体大脑。
这是我的DialogFragment的简化版本:
public class SurfaceDialog extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = requireActivity().getLayoutInflater();
builder.setView(inflater.inflate(R.layout.surface_dialog, null))
.setTitle(mMessage)
.setMultiChoiceItems(mSurfaceList, mCheckedSurfaces, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if (isChecked) {
mCheckedSurfacesPositions.add(which);
} else {
mCheckedSurfacesPositions.remove(mCheckedSurfacesPositions.indexOf(which));
}
}
});
// builder.setCancelable(false);
builder.setPositiveButton("Done", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ProcessDialogSelections(mCheckedSurfacesPositions);
dismiss();
}
}).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
listener.onSurfaceDialogSelectedSent(mUnitSurfaces);
dismiss();
}
}).setNeutralButton(mNeutralButtonLabel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dismiss();
}
});
return builder.create();
}
surface_dialog.XML也是裸露的骨头,因为似乎没有什么改变(我什至可以乘坐CoordinatorLayout而不会影响显示或行为-正面和负面的按钮将正常显示,直到对话框必须滚动为止,然后他们消失了。
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginBottom="30dp">
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</ScrollView>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。