我正在开发一个多语言应用,需要为特定区域显示不同的布局
我的结构如下
res/
layout/
questions.xml
layout-ar-rLY/
questions.xml
当语言环境为英语(en)时,将显示默认布局。当区域设置是利比亚时,显示利比亚(ar_LY)布局。但是,当语言环境是阿拉伯语(ar)时,仍会显示利比亚布局。我需要它来显示默认布局。
我知道我可以简单地创建一个layout-ar目录并在那里复制questions.xml布局,但是,我想知道是否有更优雅的方法来实现正确的结果,所以我不必维护这两个文件。
res/
layout/
questions.xml
layout-ar/
questions.xml
layout-ar-rLY/
questions.xml
到目前为止,我提出的最佳解决方案是默认布局和阿拉伯布局都包含共享子布局。有没有更好的方法来实现相同的结果?
答案 0 :(得分:0)
感谢上述MH的评论,我在官方的方式上看了Android documentation,使用别名建议这样做。
<?xml version="1.0" encoding="utf-8"?>
<merge>
<include layout="@layout/main_ltr"/>
</merge>
不幸的是,documentation中给出的方法实际上并不起作用(详见this StackOverflow)。使用merge标记作为根元素会产生InflateException错误。
我确信StackOverflow帖子中包含的第二个建议修补程序应该可以正常工作;然而,在我看来,将Layouts放入资源的概念与创建多个副本一样有缺陷(例如,从维护角度来看,你必须记住它们在那里,而不是在你期望它们的布局文件夹中)所以最后我在以下方面做出了妥协:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<include layout="@layout/questions_default"/>
</FrameLayout>
这比仅仅合并标签更冗长,但至少它有效。