0

我有这个自定义布局,称为 semicardView。因为它非常复杂,而且我遇到了一些“onMeasure 耗时太长”的问题,所以我需要以某种方式扁平化它的层次结构。

我实例化布局表单 XML,它在适配器中调用。在构造函数中,我称之为:

View.inflate(context, R.layout.semester_card_layout, this);

布局资源如下所示:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

          android:orientation="vertical"
          android:layout_height="wrap_content"
          android:layout_width="match_parent"
          android:id="@+id/semesterInfo"
          android:visibility="visible"
          android:layout_marginLeft="6dp"
          android:layout_marginRight="6dp"
          android:layout_marginTop="4dp"
          android:layout_marginBottom="4dp"
          android:gravity="fill_horizontal"
android:layout_weight="1"
          android:background="@drawable/card_ui_bg"
>

<TextView
    android:layout_height="32dp"
    android:layout_width="fill_parent"
    android:text="@string/information"
    android:id="@+id/card_title"
    android:layout_marginLeft="6dp"
    style="@style/Theme.Kosapp.Text.Light"
    android:textAppearance="@android:style/TextAppearance.Holo.Large"
    android:gravity="center_vertical"
    android:textColor="@color/main_kosapp"/>

<LinearLayout
    android:orientation="vertical"
    android:id="@+id/card_content"
    android:fillViewport="true"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1">


</LinearLayout>

<ViewStub
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout="@layout/zero_courses_label"
    android:inflatedId="@+id/zeroCoursesMarker"
    android:id="@+id/zeroCoursesMarker"/>

我要解决的问题是,虽然我的自定义视图已经应该像线性布局一样服务(它从它扩展),但在生成的布局层次结构中,它实际上只有一个子级 - 我的布局资源中的顶级线性布局文件。我尝试使用合并标签而不是线性布局。这可以解决这个问题,但我想保留那些在 XML 中设置的布局参数 ..(只是因为它们在 DIP 中)

4

1 回答 1

0

您可以<merge>在当前标签中使用标签以及所有这些属性<LinearLayout>

<merge xmlns:android="http://schemas.android.com/apk/res/android"

      android:orientation="vertical"
      android:layout_height="wrap_content"
      android:layout_width="match_parent"
      android:id="@+id/semesterInfo"
      android:visibility="visible"
      android:layout_marginLeft="6dp"
      android:layout_marginRight="6dp"
      android:layout_marginTop="4dp"
      android:layout_marginBottom="4dp"
      android:gravity="fill_horizontal"
      android:layout_weight="1"
      android:background="@drawable/card_ui_bg"
>

<!-- card_title and card_content  -->

</merge>
于 2013-09-12T05:52:39.340 回答