我使用以下布局:
<merge
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<VideoView
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ProgressBar
android:visibility="invisible"
android:id="@+id/progress"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<LinearLayout
android:id="@+id/llSearch"
android:visibility="visible"
android:background="#50AAAAAA"
android:paddingTop="10dp"
android:gravity="center_vertical"
android:paddingBottom="10dp"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="72dp">
<ImageView
android:layout_marginLeft="16dp"
android:layout_marginStart="16dp"
android:src="@drawable/abc_ic_search_api_mtrl_alpha"
android:layout_width="40dp"
android:layout_height="40dp" />
<EditText
android:textColor="@android:color/white"
android:textColorHint="@android:color/white"
android:background="@android:color/transparent"
android:visibility="visible"
android:maxLines="1"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
<android.support.v7.widget.RecyclerView
android:visibility="invisible"
android:layout_marginTop="72dp"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<android.support.v7.widget.RecyclerView
android:visibility="gone"
android:layout_marginTop="72dp"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<com.myapp.custom.RevealView
android:id="@+id/reveal"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</merge>
通过DDMS运行应用程序时,我注意到布局最终被测量了两次,为什么会这样,我该如何防止透支?
我也无法弄清楚其他LinearLayout
来自哪里,这也很奇怪。
答案 0 :(得分:0)
测量两次不是透支。根据您使用Android的布局类型,可能需要对其进行两次测量,因为子视图之间的关系需要它。这可能发生在像LinearLayout或RelativeLayout这样的布局上。出于确切的原因,你需要检查它们的来源,但这通常不是问题。
但是如果你有类似于recycleview的东西,你应该避免在里面使用大的嵌套布局。