构建到较低 OS 版本时如何修复对话框变形?
How fix dialog deformations when build to a lower OS version?
我是 运行 我的 android 应用程序在我的 android phone 这是 OS 8.1 奥利奥,对话似乎没有问题,但是当我 install/build 到其他 phone 即 android 棒棒糖时,对话变形为原始大小。
见下图。
Please click for the image (Error design deform)
对话源代码
final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.dialogue_dash_date_picker);
final Spinner spinner = dialog.findViewById(R.id.typeViewSpinner);
Button btnDismiss = dialog.findViewById(R.id.btnOK);
String viewType = ViewTypeSingleton.getInstance().getTypeview();
if (viewType.equals(""))
spinner.setSelection(0);
else if (viewType.equals("Day"))
spinner.setSelection(1);
else if (viewType.equals("Week"))
spinner.setSelection(2);
else if (viewType.equals("Month"))
spinner.setSelection(3);
else if (viewType.equals("Year"))
spinner.setSelection(4);
else if (viewType.equals("All"))
spinner.setSelection(5);
btnDismiss.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();
String choosen = spinner.getSelectedItem().toString();
ViewTypeSingleton.getInstance().setTypeview(choosen);
message.success(""+choosen,context);
fragmentRedirection(new fragment_main());
}
});
dialog.create();
dialog.show();
请帮我解决这个问题。
谢谢
将此样式添加到您的 style.xml
<style name="MyDialogTheme" parent="Theme.AppCompat.Light.Dialog">
<item name="android:windowBackground">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">false</item>
</style>
然后像这样创建对话框
final Dialog dialog = new Dialog(context, R.style.MyDialogTheme);
请尝试使用以下方式设置对话框的高度和宽度:
Dialog dialog = new Dialog(context,android.R.style.Theme_Translucent_NoTitleBar);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.YOUR_LAYOUT);
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(dialog.getWindow().getAttributes());
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
lp.gravity = Gravity.CENTER;
dialog.getWindow().setAttributes(lp);
dialog.show();
我是 运行 我的 android 应用程序在我的 android phone 这是 OS 8.1 奥利奥,对话似乎没有问题,但是当我 install/build 到其他 phone 即 android 棒棒糖时,对话变形为原始大小。
见下图。
Please click for the image (Error design deform)
对话源代码
final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.dialogue_dash_date_picker);
final Spinner spinner = dialog.findViewById(R.id.typeViewSpinner);
Button btnDismiss = dialog.findViewById(R.id.btnOK);
String viewType = ViewTypeSingleton.getInstance().getTypeview();
if (viewType.equals(""))
spinner.setSelection(0);
else if (viewType.equals("Day"))
spinner.setSelection(1);
else if (viewType.equals("Week"))
spinner.setSelection(2);
else if (viewType.equals("Month"))
spinner.setSelection(3);
else if (viewType.equals("Year"))
spinner.setSelection(4);
else if (viewType.equals("All"))
spinner.setSelection(5);
btnDismiss.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();
String choosen = spinner.getSelectedItem().toString();
ViewTypeSingleton.getInstance().setTypeview(choosen);
message.success(""+choosen,context);
fragmentRedirection(new fragment_main());
}
});
dialog.create();
dialog.show();
请帮我解决这个问题。
谢谢
将此样式添加到您的 style.xml
<style name="MyDialogTheme" parent="Theme.AppCompat.Light.Dialog">
<item name="android:windowBackground">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">false</item>
</style>
然后像这样创建对话框
final Dialog dialog = new Dialog(context, R.style.MyDialogTheme);
请尝试使用以下方式设置对话框的高度和宽度:
Dialog dialog = new Dialog(context,android.R.style.Theme_Translucent_NoTitleBar);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.YOUR_LAYOUT);
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(dialog.getWindow().getAttributes());
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
lp.gravity = Gravity.CENTER;
dialog.getWindow().setAttributes(lp);
dialog.show();