Чрезмерное обновление представлений, если HorizontalScrollView не обернут с другим представлением - PullRequest
0 голосов
/ 01 января 2019

Итак, у меня есть действие, которое содержит HorizontalScrollView.Вот очищенный xml.

<android.support.v4.widget.DrawerLayout
    style="@style/style_DrawerLayout">
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <include
        layout="@layout/toolbar_std"/>
    <include
        layout="@layout/btn_bar_scroll"/>
    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>

<include
    layout="@layout/navigation_view"/>

</android.support.v4.widget.DrawerLayout>

И мой btn_bar_scroll (только три кнопки показаны для наглядности)

<HorizontalScrollView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:orientation"horizontal">
<Button
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:text="BTN1"
    android:drawableTop="@drawable/ic1"/>
<Button
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:text="BTN2"
    android:drawableTop="@drawable/ic2"/>
<Button
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:text="BTN3"
    android:drawableTop="@drawable/ic3"/>
</LinearLayout>
</HorizontalScrollView>

Работает нормально, именно так, как и ожидалось.За исключением того, что при использовании Show GPU View Updates я заметил, что каждое представление на всей странице обновляется всякий раз, когда прокручивается та или иная часть (даже обновляется Toolbar).Не очень хорошо для производительности.

Странно, если обернуть HorizontalScrollView другим представлением, как, например, с этим FrameLayout, ненужные обновления представлений прекращаются (только обновления HorizontalScrollView при щелчке).Любой совет?Я бы предпочел не иметь лишних FrameLayout для, казалось бы, без причины.

<FrameLayout
android:layout_height="wrap_content"
android:layout_width="wrap_content">
<HorizontalScrollView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="match_parent">
<Button
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:text="BTN1"
    android:drawableTop="@drawable/ic1"/>
<Button
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:text="BTN2"
    android:drawableTop="@drawable/ic2"/>
<Button
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:text="BTN3"
    android:drawableTop="@drawable/ic3"/>
</LinearLayout>
</HorizontalScrollView>
</FrameLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...