我想在单击按钮时显示对话框。我已经完成了这样的自定义对话框:
final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.dialog);
Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK);
dialogButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.setCanceledOnTouchOutside(false);
Window window = dialog.getWindow();
window.setLayout(300, 450);
dialog.show();
正如您所看到的,我在java中使用window.setLayout定义了布局的大小,因为它不能用于对话框的xml(我不能将对话框主题放在活动上)。我想根据屏幕大小在java中设置布局大小,对于xml,布局大和xlarge(正如我所解释的,我不能使用xml根据屏幕大小来定义布局)。 / p>
谢谢,
答案 0 :(得分:2)
您可以在dimens.xml
文件夹的values
文件中对其进行配置。您可以为不同的屏幕尺寸指定值文件夹,如下所示:
values-w820dp
和dimens.xml文件示例:
<resources>
<dimen name="dialog_height">64dp</dimen>
<dimen name="dialog_width">64dp</dimen>
</resources>
Here你有更多关于它的信息。
然后在您的代码上,您可以像这样访问它
int dialogHeight = (int) getResources().getDimension(R.dimen.dialog_height)
int dialogWidth = (int) getResources().getDimension(R.dimen.dialog_width)
getResources().getDimension()
将自动根据设备从正确的文件夹中解析正确的尺寸。
这里有一些常见的配置:
- 320dp:典型的手机屏幕(240x320 ldpi,320x480 mdpi,480x800 hdpi等)。
- 480dp:像Streak(480x800 mdpi)这样的tweener平板电脑。
- 600dp:7“片剂(600x1024 mdpi)。
- 720dp:10英寸平板电脑(720x1280 mdpi,800x1280 mdpi等)。
希望它有所帮助。
答案 1 :(得分:0)
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
答案 2 :(得分:0)
这是解决方案,我一直使用它与服装布局
以下是代码
final Dialog dialog = new Dialog(context);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setCancelable(false);
dialog.setContentView(R.layout.dialog_customer);
try {
LinearLayout lytdialog = (LinearLayout) dialog.findViewById(R.id.dialog);
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int height = size.y;
int width = size.x;
android.view.ViewGroup.LayoutParams layoutParams = lytdialog.getLayoutParams();
layoutParams.width = width;
layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
lytdialog.setLayoutParams(layoutParams);
} catch (Exception e) {
e.printStackTrace();
}
dialog.show();
}
快乐编码