我想根据屏幕方向为自定义提醒对话框设置尺寸。我的目的是交换高度和宽度值,以使盒子看起来像是相同的大小,但处理各种设备的各种屏幕尺寸,由于Android碎片似乎很难在所有设备上实现相同的效果。 Android的自动调整大小对我来说似乎很奇怪。
肖像:
alertDialog.width=screen.width*0.8
alertDialog.height=screen.height=0.5
风景:
alertDialog.width=screen.width*0.5;
alertDialog.height=screen.height*0.8
请注意,自定义提醒对话框必须使用相同的代码,并支持从JellyBean(至少4.2)到Nougat(7)的Android版本。
我正在使用android.support.v7.AlertDialog(最新的可用东西)
我认为现在应该避免使用android.app.Dialog(老了)
另外,我需要一个黑色边框和白色背景。我无法在所有设备上实现相同的效果,(我需要圆角的透明度)
我使用 android:windowMinWidthMajor 和 android:windowMinWidthMinor ,但它们会影响两种布局(纵向和横向) )如果内容不符合指定的约束条件,似乎会被忽略。
我希望 android:windowMaxWidthMinor & android:windowMaxWidthMajor
答案 0 :(得分:0)
这是我用于调整页面上特定视图大小的内容:
myView.getViewTreeObserver().addOnGlobalLayoutListener(() -> {
item.height = myView.getHeight();
});
将其应用于您想要做的事情:
myView.getViewTreeObserver().addOnGlobalLayoutListener(() -> {
LayoutParams params = (get the layout params according to the layout);
params.width = myView.getWidth() * 0.5;
params.height = myView.getHeight() * 0.8;
myView.setLayoutParams(params);
});
您必须使用侦听器,因为该对象将被添加到视图树中,将被测量并准备显示,但尚未显示,因此您可以在可见之前更改其尺寸。 / p>
答案 1 :(得分:0)
<强>更新强>:
我可以通过为我的布局设置android:layout_centerInParent="true"
来实现它。和样式中每个组件的布局值
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_gravity="center"
实现中心对齐。
https://github.com/computingfreak/CFTest/blob/master/app/src/main/res/layout/alert_popup.xml
提供的XML代码我想知道这行代码是多余的
view.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
因此将其留给Android系统来决定尺寸并根据内容调整大小。它适用于我的情况,但在长文本的情况下会失败,也许某种滚动布局会有所帮助。干杯!