Android:具有多个方向的不同活动的可重用布局文件

时间:2016-02-24 10:35:31

标签: android android-layout android-orientation reusability android-inflate

是否有办法为具有两个方向的另一个活动重复使用单个活动布局文件(一个方向)。

例如,我有一个MainActivity,其中一个布局文件只显示全屏的所有内容:

activity_generic.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/fragmentContainer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:ignore="MergeRootFrame">

</FrameLayout>

MainActivity.java

setContentView(R.layout.activity_generic);

然后我有了SettingsActivity,它应该在纵向模式下全屏显示所有内容,并在横向模式下显示所有内容。

activity_settings.xml

//use activity_generic.xml somehow

activity_settings.xml(土地)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:baselineAligned="false">

<FrameLayout
    android:id="@+id/content_left"
    android:layout_width="0dp"
    android:layout_weight="40"
    android:layout_height="match_parent"/>

<FrameLayout
    android:id="@+id/content_right"
    android:layout_width="0dp"
    android:layout_weight="60"
    android:layout_height="match_parent"/>
</LinearLayout>

SettingsActivity.java

setContentView(R.layout.activity_settings);

当然有一种方法可以通过检查方向并在此基础上对另一个布局进行充气来解决代码中的问题,但这有点像hacky。我试图使用包含标签,但它不起作用。有没有人知道这个问题的解决方案?

修改

我设法编辑activity_settings.xml,以便它使用包含标记。 然而,它有点矫枉过正,因为它使用的代码几乎与activity_generic.xml中的代码一样多。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
       <include layout="@layout/activity_generic"/>
</LinearLayout>

此时我不确定是否可以使用activity_generic.xml代替activity_settings.xml(肖像)。

1 个答案:

答案 0 :(得分:0)

您无法使用完全相同的布局并实现相同的目标。 然而,Android有一些内置功能,这是一种常见的做法。

默认情况下,android应从/ res / layout文件夹中选择布局文件, 适用于风景和人像方向。 但是,您可以创建/ res / layout-land文件夹并放置具有相同名称的布局文件,并在那里进行与横向相关的UI更改。 Android会自动为横向选择此布局文件。

您可以查看此链接以获取更多详细信息:Android: alternate layout xml for landscape mode