【发布时间】:2026-02-14 11:45:01
【问题描述】:
有没有办法将单个活动布局文件(一个方向)重用于具有两个方向的另一个活动。
例如,我的 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);
当然,有一种方法可以在代码中解决这个问题,方法是检查方向并在此基础上扩展另一个布局,但感觉有点笨拙。我尝试使用包含标签,但它不起作用。有没有人知道这个问题的解决方案?
编辑
我设法编辑了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(纵向)。
【问题讨论】:
-
I tried to use an include tag but it didn't work请详细说明它是如何不起作用的。使用 XML 的相关部分更新您的问题。
标签: android android-layout android-orientation reusability android-inflate