android水平和垂直布局在一个文件中

时间:2014-03-05 19:30:04

标签: android android-layout layout

我知道提供垂直和水平布局的默认方法是创建两个xml文件,一个在布局中,第二个在layout-land dirs中。

然而,当我有一个非常大的布局,其中只有非常小的部分将取向时,我宁愿避免创建两个文件,因为它们很难保持同步(例如,我会改变一个东西,会忘记改变第二个)。

我想知道是否还有其他办法,例如。类似的东西:

common part

if orientation==vertical

part of xml vertical layout definition

if orientation==horizontal

part of xml horizontal layout definition

common part

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

制作单个布局并在文件中创建一个可见的视图,一个消失,然后使用

      @Override
        public void onConfigurationChanged(Configuration newConfig) {
            super.onConfigurationChanged(newConfig);
            if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {//play with visibilities}
else
{//same

}

答案 1 :(得分:1)

在布局中使用<include>标记怎么样?这将最终创建三个XML文件,一个适用于所有方向的“大”文件,然后是一个较小的横向和一个较小的纵向XML布局,仅适用于每个方向不同的部分。

有关<include>

的详情,请参阅Layout Resource

答案 2 :(得分:0)

在单个布局文件中创建Layout元素(RelativeLayout或LinearLayout,无论您使用哪个)。然后根据方向控制他们在代码中的可见性。

(这种方式我建议会有效,但你最好使用Android为此提供的资源框架 - 而不是像你提议的那样侧面踩 - 但这不是你的问题)

喜欢这个伪代码:

<LinearLayout>
     <!-- Horizontal Layout -->
     <RelativeLayout 
         android:visibility="gone" />

     <!-- Vertical Layout -->
     <RelativeLayout
          android:visibility="visible" />
</LinearLayout>

然后在Java中:

if (horizontal) {
   horizView.setVisibility(View.VISIBLE);
   vertView.setVisibility(View.GONE);