部分下载我的应用的用户抱怨他们无法安装应用,因为它未找到MainActivity.class布局。经过调查,我意识到那些手机有不寻常的屏幕。
例如,其中一部手机是HTC ChaCha,屏幕尺寸为480 x 320像素,2.6英寸(~22 ppi像素密度)。根据这些规范,它是普通屏幕,MDPI。
但是,由于其屏幕设置为横向模式(宽屏移动屏幕),Android不会将其识别为普通MDPI,而是将其识别为其他内容,然后尝试从/ layout dir中提取XML布局。此目录中的Main.xml布局没有设想这种不寻常的屏幕,并且布局被破坏(布局图标太大,可能从HDPI可绘制目录中拉出)。
如何为这些不寻常的手机制作XML布局?
PS。还有一个问题。当我通过Android SDK Manager为这款手机创建模拟器时,我应该将“抽象LCD密度”设置为222还是保持为160 ???
答案 0 :(得分:2)
HTC Chacha的问题实际上是它的屏幕方面。 这是一个“不长”的屏幕(如果我是正确的,就像HTC Wildfire一样)。
要为此手机(以及所有4/3比例的屏幕)制作特定布局,只需在布局不长的目录中进行布局。
res
|---layout-notlong
|----mylayout.xml
答案 1 :(得分:1)
您确定错误是无法找到活动的类吗?
多家设备供应商将错误地描述其屏幕密度。密度不是从物理尺寸和像素数量得出的。有些人出于兼容性原因这样做了;例如,最初的三星Galaxy Tab(在Honeycomb之前发布,因此在技术上不是“平板电脑就绪”)报告为HDPI,因此选择图形和布局使其更像手机使用屏幕。
关于您的布局,如果您有一个不错的默认设置(res/layout/
),如果没有更具体的布局(例如res/layout-land/
或res/layout-large/
),则会选择此默认设置。请记住,您在代码中引用的每个视图id
必须在所有布局中都可用。让它们彼此保持最新状态,否则最终会出现不一致的行为。
如果你努力为至少三个主要密度(ldpi,mdpi和hdpi)制作图形,那么你不应该看到过大的图标,除非屏幕的物理尺寸小于你的布局所期望的。另外,在布局中使用dp
而不是px
。
答案 2 :(得分:-1)