2016-11-18 17 views
0

假设我定义了两个同名的布局,并将其中一个放置在“layout-land”目录中。在Android中为不同的屏幕方向管理不同的视图/小部件?

如果两个布局文件包含相同的视图(和视图ID),那么我的片段/活动将会找到它们,并且在那里没有问题。

但是,我面临的情况是纵向和横向设计真的不同,我需要更改每个布局文件中实现的自定义视图/控件类型。

如果视图ID或视图类型不同或未找到,则可能导致NullPointer异常或ClassCast异常。

我不喜欢在我的片段代码中检查类型或空值的想法,我认为必须有更好的方法来做到这一点,但我还没有找到它。

有没有人知道一个“酷”或至少更优雅的方式来实现这一目标?

谢谢!

回答

0

在您的布局文件夹中,在资源内部,您需要有两个单独的布局文件,一个用于纵向,一个用于横向。

例子:

- res 
- - layout 
- - - main_layout 
- - - main_layout-land 

有你有它,你的应用程序现在将使用两个不同的布局文件,这取决于它的方位。有关更多信息,请参见This stackoverflow

+0

你好乔希,请阅读我的问题描述。我知道布局资源处理,我需要知道如何管理布局文件之间视图和小部件完全不同的情况。 –

+0

由于Android在您更改设备状态时完全创建了新的活动,您可能会倾听设备方向的更改并启动新的活动。 http://stackoverflow.com/questions/5726657/how-to-detect-orientation-change-in-layout-in-android看到这个线程。根据方向的不同,您可以启动整个新活动或使用适当的活动替换片段。这应该有助于摆脱你的问题。 –

相关问题