Excessive view updates unless HorizontalScrollView wrapped with another View
So, I have an activity that contains a HorizontalScrollView
. Here is a cleaned up 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>
And my btn_bar_scroll
(only three button shown for clarity)
<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>
It works fine, exactly as expected. Except that when using Show GPU View Updates
, I've noticed that every view on the entire page updates whenever the scroll is dragged either way (even the Toolbar
updates). Not so great for performance.
Weirdly, by wrapping the HorizontalScrollView
with another view, like with this FrameLayout
, the unnecessary view updates stop (only the HorizontalScrollView
updates when it is flicked). Any advice? I'd rather not have the extra FrameLayout
for seemingly no reason.
<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>
android horizontalscrollview
add a comment |
So, I have an activity that contains a HorizontalScrollView
. Here is a cleaned up 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>
And my btn_bar_scroll
(only three button shown for clarity)
<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>
It works fine, exactly as expected. Except that when using Show GPU View Updates
, I've noticed that every view on the entire page updates whenever the scroll is dragged either way (even the Toolbar
updates). Not so great for performance.
Weirdly, by wrapping the HorizontalScrollView
with another view, like with this FrameLayout
, the unnecessary view updates stop (only the HorizontalScrollView
updates when it is flicked). Any advice? I'd rather not have the extra FrameLayout
for seemingly no reason.
<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>
android horizontalscrollview
add a comment |
So, I have an activity that contains a HorizontalScrollView
. Here is a cleaned up 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>
And my btn_bar_scroll
(only three button shown for clarity)
<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>
It works fine, exactly as expected. Except that when using Show GPU View Updates
, I've noticed that every view on the entire page updates whenever the scroll is dragged either way (even the Toolbar
updates). Not so great for performance.
Weirdly, by wrapping the HorizontalScrollView
with another view, like with this FrameLayout
, the unnecessary view updates stop (only the HorizontalScrollView
updates when it is flicked). Any advice? I'd rather not have the extra FrameLayout
for seemingly no reason.
<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>
android horizontalscrollview
So, I have an activity that contains a HorizontalScrollView
. Here is a cleaned up 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>
And my btn_bar_scroll
(only three button shown for clarity)
<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>
It works fine, exactly as expected. Except that when using Show GPU View Updates
, I've noticed that every view on the entire page updates whenever the scroll is dragged either way (even the Toolbar
updates). Not so great for performance.
Weirdly, by wrapping the HorizontalScrollView
with another view, like with this FrameLayout
, the unnecessary view updates stop (only the HorizontalScrollView
updates when it is flicked). Any advice? I'd rather not have the extra FrameLayout
for seemingly no reason.
<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>
android horizontalscrollview
android horizontalscrollview
edited Feb 11 at 15:55
seekingStillness
asked Dec 31 '18 at 23:16
seekingStillnessseekingStillness
1,72621330
1,72621330
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53992073%2fexcessive-view-updates-unless-horizontalscrollview-wrapped-with-another-view%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53992073%2fexcessive-view-updates-unless-horizontalscrollview-wrapped-with-another-view%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown