以编程方式设置布局

时间:2013-02-20 06:24:09

标签: android android-layout

我为不同的布局创建了四个文件夹,以使我的应用程序支持所有屏幕。四个文件夹,即布局(默认),布局大,布局小,布局-xlarge,我已经创建。在所有这些内部中,我放置了一个名为“activity_start.xml”的xml文件。现在,我想使用startActivity.java中的以下代码以编程方式设置布局:

DisplayMetrics displayMetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

    switch(displayMetrics.densityDpi)
    { 
        case DisplayMetrics.DENSITY_LOW:

            // layout for small sized devices.

            break; 

        case DisplayMetrics.DENSITY_MEDIUM: 

            // layout for medium-sized devices.
            setContentView(R.layout.activity_start);
            break; 

        case DisplayMetrics.DENSITY_HIGH: 

            // layout for big-sized devices.
            setContentView(R.layout-large.activity_start);//<----------- syntax error in this line
            break; 
    }

现在在 DisplayMetrics.DENSITY_MEDIUM 的情况下,代码是正确的(我猜),但是当我为 DisplayMetrics.DENSITY_HIGH 执行setContentView时,它不会占用该文件夹我创建了(layout-large)。

我的意思是,当我们输入setContentView的参数,键入R.lay ...(点击ctrl + space)时,它不会显示文件夹“layout-large”。

我想以编程方式设置布局。如果有人可以帮助我,请。

1 个答案:

答案 0 :(得分:1)

你完全错了。拥有合格文件夹名称的重点是避免必须以编程方式完全处理它。 Android会自动处理此问题。此外,密度不等于屏幕尺寸,因此您尝试将密度与不同的屏幕尺寸布局联系起来是不正确的。

如果不同屏幕尺寸的布局之间没有重大差异(实际上,不应该不是平板电脑类型布局(layout-sw600dp或layout-sw720dp)你应使用尽可能少的布局来完成您的设计。