如何在不同的活动中使用相同的LinearLayout

时间:2015-06-07 12:35:38

标签: android android-activity android-linearlayout

我想在不同的活动中使用相同的LinearLayout。在图片中选择的LinearLayout的id是previewLinear。我想要做的是,在不同的活动中使用previewLinear。我有A和B活动。首先,我以编程方式对活动A中的previewLinear进行一些更改(添加边框,将其切成碎片等),我想将整个previewLinear复制到B活动。

pencerebol.xml enter image description here

我尝试的是什么;

活动:(容器是静态的)

...
setContentView(R.layout.pencerebol);
...
container = (LinearLayout) findViewById(R.id.previewLinear);
        container.setBackground(getResources().getDrawable(R.drawable.border));

B活动:

...
setContentView(R.layout.pencerebol);
container = (LinearLayout) findViewById (R.id.previewLinear);
container = A.container; // I know that this line is completely wrong but this is what i want to do.

感谢您的建议。

2 个答案:

答案 0 :(得分:3)

您可以在XML文件中使用<include>属性,只创建一个布局并将其包含在其他活动/片段中,这是一个示例:

为previewLinear布局创建一个xml,将其命名为:

  

layout_preview_linear.xml

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/previewLinear"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">
     </LinearLayout>

然后在您的活动A或B中,您可以将其包含在以下内容中:

  

activity_a.xml

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/activity_a_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

        <include
            android:id="@+id/previewLayout"
            layout="@layout/layout_preview_linear"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>

您也可以在JAVA代码中使用该布局,希望这对您有所帮助。

答案 1 :(得分:1)

如果我做得对,你想让B活动的LinearLayout看起来和A活动一样。

您可以在A活动中创建方法

static void createLinearLayout(LinearLayout layout){
    layout.setBackground(getResources().getDrawable(R.drawable.border));
    ...
} 

然后在B活动中调用它

A.createLinearLayout(container);