如何构建一个自定义视图,将其内容添加到其子项之一?

时间:2014-01-26 12:09:41

标签: android android-layout android-custom-view

我有以下android布局,这个代码在我的应用程序中的所有活动布局中都是重复的:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/activity_actionbar_background"/>

    <FrameLayout
        android:id="@+id/test_activity_content_frame_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="?attr/actionBarSize">

        <!-- content here -->

    </FrameLayout>

</RelativeLayout>

我想将此布局重构为可以包含嵌套项的视图,然后在活动布局中使用,如:

<com.my.app.ContentLayout>
    <!-- content here -->
</com.my.app.ContentLayout>

我如何开发我的ContentLayout视图类来实现这一目标?

1 个答案:

答案 0 :(得分:1)

您可以在自定义组件中重构该布局,您只需要将内容CustomLayout中声明的内容放在内部FrameLayout中(通过覆盖{{的默认行为) 1}}方法)。请查看以下示例:

addView()

组件本身将是:

<!-- R.layout.Inner_content basic inner content that will be added to our custom component -->
<merge xmlns:android="http://schemas.android.com/apk/res/android">

    <FrameLayout
        android:id="@+id/dummy_id" <!-- we need an id that we could count on -->
        android:layout_width="match_parent"
        android:layout_height="?android:attr/actionBarSize"
        android:background="@color/activity_actionbar_background"/>

    <FrameLayout
        android:id="@+id/test_activity_content_frame_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="?android:attr/actionBarSize">

        <!-- content here -->

    </FrameLayout>

</merge>