2017-03-19 19 views
1

嗯,这是我第一次在真实的Android设备上测试我的应用程序。用户界面布局与模拟器有着惊人的不同。请看图片:Codename One:模拟器上的用户界面布局和真实的Android设备完全不同

enter image description here

enter image description here

的代码是相同的,什么也没有改变。

Android版本是5.1.1。

的代码显示屏幕:

private final void show() { 
    loginSignupForm = new Form(null, new BorderLayout()); 
    Tabs loginSignupTabs = new Tabs(); 
    Image splashScreenImage = theme.getImage("Starlent_logo25x25.png"); 
    ((Label) loginSignupForm.getToolbar().getTitleComponent()).setIcon(splashScreenImage); 
    Style loginSignupStyle = UIManager.getInstance().getComponentStyle("Tab"); 
    prepareAndAddSignupTab(loginSignupTabs, loginSignupStyle); 
    prepareAndAddLoginTab(loginSignupTabs, loginSignupStyle); 
    loginSignupForm.add(BorderLayout.CENTER, loginSignupTabs); 
    loginSignupForm.show(); 
} 

那么,如何管理或期望的布局要在不同的设备?

至少,我希望将徽标放置在Android设备的中心。我怎么做?

+0

嗨,在“新建项目”创建阶段,您是否选择了“原生主题”模板?这似乎是您使用的主题适应设备的操作系统平台。因此,模拟器具有iOS设备和iOS主题,Android设备具有Android本机主题,因此布局不同(这是默认的OS标准)。您可以覆盖所有这些设置。最快的方法是使用不同的主题,方法是打开资源编辑器(theme.res)文件。并添加现有的红色,蓝色或商业主题。 –

+0

是的,我特意选择了本地主题。换句话说,我必须让它适应平台的默认主题。那么集中标志呢?如果我能将徽标居中,那就没问题了(假设我的其他屏幕没有更多惊喜)。 – ikevin8me

+0

它看起来像模拟器是iPhone和真实设备的屏幕截图是Android。这是差异的原因吗?我可能是错的。 –

回答

1

您正在使用本机主题,如果您安装了Android外观,您将看到该主题在模拟器上的行为也是如此,因为这是故意的。

您的主题和代码可以覆盖特定于平台的行为以产生相同的结果,例如覆盖标签放置等。虽然如果标签在底部,应用程序不会觉得在Android上是原生的。

相关问题