我想设置对话框的最大高度。不是由dp或px设置的自定义高度。我想设置最大可能的高度来对比当前设备的屏幕尺寸。如何将最大高度设置为对话框?
回答
您不能直接设置最大高度。只是一个替代品,如果其高度大于要设置的最大高度,则可以重置高度。
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(dialog.getWindow().getAttributes());
int dialogWidth = lp.width;
int dialogHeight = lp.height;
if(dialogHeight > MAX_HEIGHT) {
d.getWindow().setLayout(width,MAX_HEIGHT);
}
DisplayMetrics displaymetrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay()
.getMetrics(displaymetrics);
int width = (int) (displaymetrics.widthPixels);
int height = (int) (displaymetrics.heightPixels);
d.getWindow().setLayout(width,height);
d.show();
其中d是对话。此代码将对话框设置为全屏。
Noooo。默认对话框的最大高度。使对话框高度不等于屏幕高度,但使其成为默认对话框高度的最大值 –
默认对话框高度取决于您为其输入的文本。你的要求是什么? – EagleEye
而我想要设置对话框的固定高度 –
Dialog dialog = new Dialog(context);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.dialog_example);
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(dialog.getWindow().getAttributes());
lp.width = WindowManager.LayoutParams.WRAP_CONTENT;
lp.height = WindowManager.LayoutParams.MATCH_PARENT;
//lp.height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 330/*height value*/, getResources().getDisplayMetrics()); for custom height value
dialog.getWindow().setAttributes(lp);
dialog.show();
我认为这可以解决它。我已经添加了两种方法,一种是为匹配父级属性设置对话框高度,另一种是为自定义值设置高度
可能是addOnLayoutChangeListener()对你有用。
可以dialog.show之前或之后添加它()
这是我的代码:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
final View view = LayoutInflater.from(this).inflate(R.layout.custom_alertdialog, null);
builder.setMessage("TestMessage xxxxxxx");
builder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.setView(view); //在setView之前调用builder的原有设置控件方法时,能展示设置的控件,之后设置的则不展示!!
AlertDialog dialog = builder.create();
dialog.getWindow().setBackgroundDrawable(getResources().getDrawable(R.drawable.shape_bk_cnoneralert));
//builder.show(); //用这个的话,背景并不会改变,依旧是默认的
dialog.show(); //必须用这个show 才能显示自定义的dialog window 的背景
//这种设置宽高的方式也是好使的!!!-- show 前调用,show 后调用都可以!!!
view.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop,
int oldRight, int oldBottom) {
int height = v.getHeight();
int contentHeight = view.getHeight();
LogUtils.e("高度", height + "/" + "/" + contentHeight);
int needHeight = 500;
if (contentHeight > needHeight) {
//注意:这里的 LayoutParams 必须是 FrameLayout的!!
//NOTICE : must be FrameLayout.LayoutParams
view.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT,
needHeight));
}
}
});
- 1. 设置一个最大宽度为我的对话框
- 2. 如何设置ListView的最大高度?
- 3. 如何设置RecyclerView的最大高度
- 4. 如何将android datepicker对话框的最大日期设置为当前日期?
- 5. 如何设置Facebook请求对话框的高度?
- 6. 如何设置框架的最小和最大高度或宽度?
- 7. 如何最大高度设置为CSS网格
- 8. 如何为Facebook Like框设置更大的高度?
- 9. 如何将dojox.mobile.View设置为高度100%
- 10. 如何将div高度设置为100%?
- 11. 如何将高度设置为主div?
- 12. 如何将UILabel高度设置为零
- 13. 如何将recyclerview高度设置为wrap_content?
- 14. 将div风格设置为最大高度
- 15. android设置对话框片段的宽度和高度
- 16. 将UITableViewCell高度设置为UIImage高度?
- 17. 如何在响应式设计中将最大高度设置为图像的原始高度?
- 18. 如何设置TinyMCE的最小调整大小宽度/高度?
- 19. 如何设置文本角度组件的最大高度
- 20. 如何设置日期选取器对话框的高度和宽度
- 21. 如何在Android中设置警报对话框的高度和宽度?
- 22. 如何设置默认警报对话框的高度和宽度
- 23. 我可以设置我的最大会话长度有多高?
- 24. 使用javascript设置最大高度
- 25. 在RecyclerView上设置最大高度
- 26. 如何将ImageView的最大高度设置为屏幕上的可用空间?
- 27. 如何将WPF控件的高度设置为可用的最大值?
- 28. 如何为对话框主题设置百分比宽度
- 29. 将框架中的对话框对齐并设置其宽度
- 30. 如何将标签高度设置为内容高度
像高度:100%? – DevMoutarde
如果你希望它被修复,那么你应该设置一个dp,因为它是基于屏幕的物理尺寸。 –