我有以下层次结构:
<RelativeLayout
android:id="@+id/activity_main"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="example.com.hellorelayout.MainActivity"
>
<example.com.hellorelayout.MyFrameLayout
android:layout_width="100dp"
android:layout_height="100dp"
android:background="#f00"
android:tag="frame1"
>
<TextView
android:id="@+id/hello1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello 1"
android:layout_gravity="center"
/>
</example.com.hellorelayout.MyFrameLayout>
<example.com.hellorelayout.MyFrameLayout
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginLeft="120dp"
android:background="#ff0"
android:tag="frame2"
>
<TextView
android:id="@+id/hello2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello 2"
android:layout_gravity="center"
/>
</example.com.hellorelayout.MyFrameLayout>
</RelativeLayout>
每当我更新其中一个TextView时,所有视图都被布局(即触发两个FrameLayouts的onLayout()和onGlobalLayout())。
我希望不会发生这种情况,因为FrameLayouts具有固定的宽度和高度。
那么......发生了什么?如何防止在Views上调用onLayout()?顺便说一句,如果我在TextViews中使用match_parent它可以工作,但这是不可行的,因为这是我无法控制TextView的场景的简化。