在Android中管理不同屏幕方向的不同视图/小部件?

时间:2016-11-18 19:15:51

标签: android android-layout android-view

假设我定义了两个名称相同的布局,并将其中一个布局放在“layout-land”目录中。

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

但是,我面临的情况是肖像和风景设计确实不同,我需要更改每个布局文件中实现的自定义视图/窗口小部件类型。

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:0)

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

示例:

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

如果你拥有它,你的应用程序现在将使用两种不同的布局文件,具体取决于它的方向。有关详细信息,请参阅This stackoverflow