根据屏幕大小定义JAVA中的布局大小(android)

时间:2015-10-16 07:59:44

标签: java android android-studio

我想在单击按钮时显示对话框。我已经完成了这样的自定义对话框:

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>

谢谢,

3 个答案:

答案 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)

这是解决方案,我一直使用它与服装布局

  1. 获取屏幕尺寸(宽度和高度)
  2. 将其设置为对话框。
  3. 以下是代码

                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();
            }
    

    快乐编码