0

我为不同的布局创建了四个文件夹,以使我的应用程序支持所有屏幕。我创建了四个文件夹,即layout(默认)、layout-large、layout-small、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 时,它不会占用我创建的文件夹(布局大)。

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

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

4

1 回答 1

1

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

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

于 2013-02-20T06:34:27.137 回答