【问题标题】:Separate 1024 width devices单独的 1024 宽度设备
【发布时间】:2014-03-04 11:57:52
【问题描述】:

我正在开发一个 Android 应用程序,该应用程序在宽度尺寸为 1024 的设备上给我带来了问题。我尝试创建一个布局文件夹 layout-w1024 和 layout-mdpi-sw1024dp;但设备改用 layout-mdpi 文件夹。我使用 15 作为最低 android 版本。

有没有其他方法可以分离1024个设备?

【问题讨论】:

  • 设备是1024 by ...? mdpi 数位板布局文件夹的正确名称是 layout-swXYZdp-mdpi,其中 XYZ 是最小宽度(因此:1024*600 => XYZ 是 600,而不是 1024)
  • 我有 sw600dp-mdpi 和 sw768dp-mdpi 的文件夹;但布局文件仍取自 layout-mdpi 文件夹。我不确定为什么会这样。
  • 您尝试过 -land 和 -port 变体吗?因为我默认是 -port (所以它会默认到 mdpi 文件夹,如果没有找到),而我猜你主要是在 -land 方向使用它。
  • 是的,我正在使用横​​向。实际上,我的完整文件夹名称是 layout-sw600dp-land-mdpi 和 layout-sw768dp-land-mdpi。尽管这很符合设备的描述,但布局仍然不是从这些文件夹中获取的。
  • 真的很有趣。所以,我最后的办法是,按照 android 开发者的话:even combine the w<N>dp and h<N>dp qualifiers 类似:layout-w1024dp-h600dp-mdpi-land。 h = 768 也是如此

标签: android android-layout screen-resolution


【解决方案1】:

如果它适合您的项目,您可以通过编程方式执行此操作,类似这样的操作会根据屏幕尺寸调用不同的布局。这有一些限制,因为它只能从 Activity 调用(在你的情况下应该不是问题),如果你的应用程序的布局有问题,它可能不是很有可扩展性。

条件width == 1024 可能应该替换为大于或更具体的内容,您需要使用它一段时间才能使其正常工作。您还应该考虑屏幕的高度,而不仅仅是宽度。

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;

或者如果你想要它以像素代替:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int width = metrics.widthPixels;

然后:

//Depending on the width, set one layout or anotherone
setContentView(width == 1024?R.layout.for1024:R.layout.normal);

Source

【讨论】:

  • 我刚试过这段代码,size.x 给了我 455 而不是 1024 ?我需要做一些计算吗?很抱歉,我对这一切都不熟悉。
猜你喜欢
  • 1970-01-01
  • 2017-02-08
  • 1970-01-01
  • 2023-04-09
  • 2014-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多