Android:如何在更新View时防止整个层次结构的重新布局?

时间:2017-03-04 22:25:12

标签: android android-layout android-framelayout

我有以下层次结构:

<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的场景的简化。

0 个答案:

没有答案