如何在活动之间共享通用布局而没有片段 [英] How to share common layout between activities without fragment

查看:53
本文介绍了如何在活动之间共享通用布局而没有片段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有可能在活动之间共享布局(部分)?例如,在我的应用程序中,所有活动的布局都相似,顶部是长操作指示器(进度条,未执行任何操作时将其隐藏),底部用于显示错误.对于所有活动,只有中间部分是不同的.参见下面的图片.

Is there any possible way to share layout(part) between activities? For example, in my app, all activities have similar layout, the top part is long operation indicator (a progress bar, hidden when no operation is being executed), the bottom part is for showing errors. Only the middle part is different for all activities. See the picture below.

所以我的问题是,是否可以为我的应用程序中的所有活动重用通用布局(加载和错误部分)? (目前,出于某些原因,我不想使用片段进行操作)

so my question is, is it possible to reuse the common layout(loading and error part) for all activities in my app? (currently I don't want to use fragment to do it for some reasons)

也许布局资源应该是这样的:

maybe the layout resources should like this:

布局文件夹

activity_common.xml

activity_one_content.xml

activity_two_content.xml

谢谢

推荐答案

您可以创建一个抽象的基础"活动,所有活动都从该活动扩展而来,覆盖setContentView以合并基础和子活动布局.

You can create an abstract 'base' activity that all your activities extend from, overriding setContentView to merge the base, and sub activity layouts.

通过这种方式,您可以处理基本活动中的所有加载/错误代码,并且只需在子活动中隐藏和显示视图之间切换即可.

This way you can handle all the loading/error code in the base activity, and simply toggle between hiding and showing the views in the sub activities.

抽象活动:

public abstract class BaseActivity extends Activity {

    protected RelativeLayout fullLayout;
    protected FrameLayout subActivityContent;

    @Override
    public void setContentView(int layoutResID) {
        fullLayout = (RelativeLayout) getLayoutInflater().inflate(R.layout.activity_base, null);  // The base layout
        subActivityContent = (FrameLayout) fullLayout.findViewById(R.id.content_frame);            // The frame layout where the activity content is placed.
        getLayoutInflater().inflate(layoutResID, subActivityContent, true);            // Places the activity layout inside the activity content frame.
        super.setContentView(fullLayout);                                                       // Sets the content view as the merged layouts.
    }

}

布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <!-- The main content view -->
    <FrameLayout
        android:id="@+id/loading_frame"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <!-- The main content view -->
    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <FrameLayout
        android:id="@+id/error_frame"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</RelativeLayout>

这篇关于如何在活动之间共享通用布局而没有片段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆