android – 在CoordinatorLayout中滚动查看仅显示部分视图

android – 在CoordinatorLayout中滚动查看仅显示部分视图,第1张

概述我制作了一个包含带有AppBar和NestedScrollView的CoordinatorLayout的 Android应用程序.在我的NestedScrollView中,我有一个项目列表,以及一个滚动到我的NestedScrollView中的项目的按钮. 单击按钮时,Android应用程序向下滚动到该项目,但不显示整个项目,仅部分显示:http://i.stack.imgur.com/8kuq0 我制作了一个包含带有Appbar和nestedScrollVIEw的CoordinatorLayout的 Android应用程序.在我的nestedScrollVIEw中,我有一个项目列表,以及一个滚动到我的nestedScrollVIEw中的项目的按钮.

单击按钮时,AndroID应用程序向下滚动到该项目,但不显示整个项目,仅部分显示:http://i.stack.imgur.com/8kuq0.png

我期待如下:http://i.stack.imgur.com/k0A5N.png

看起来应用程序需要滚动的数量与Appbar大小相同,以显示整个视图.如果我删除下面的布局文件中的滚动标志,我会得到预期的行为.

我做错了什么?

更新(2016年1月12日):我已经更新了图片,因此它们更大了.此外,正如我在Herry的回复中所写,我怀疑VIEw.requestRectangleOnScreen()是否是正确的调用方法,或者我应该使用不同的布局,然后使用nestedScrollVIEw.

我的活动编码如下:

package com.example.sij.coordinatorlayoutBUG;import androID.graphics.Rect;import androID.os.Bundle;import androID.os.Handler;import androID.os.Looper;import androID.support.v7.app.AppCompatActivity;import androID.support.v7.Widget.Toolbar;import androID.vIEw.VIEw;import androID.Widget.button;import androID.Widget.TextVIEw;public class MainActivity extends AppCompatActivity {    TextVIEw itemToNavigateto;    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_main);        Toolbar toolbar = (Toolbar) findVIEwByID(R.ID.toolbar);        setSupportActionbar(toolbar);        itemToNavigateto = (TextVIEw)findVIEwByID(R.ID.itemToNavigateto);        button navigatorbutton = (button)findVIEwByID(R.ID.navigator_button);        navigatorbutton.setonClickListener(navigatetoItemListener());    }    VIEw.OnClickListener navigatetoItemListener() {        return new VIEw.OnClickListener() {            @OverrIDe            public voID onClick(final VIEw v) {                new Handler(Looper.getMainLooper()).post(new Runnable() {                    @OverrIDe                    public voID run() {                        itemToNavigateto.requestRectangleOnScreen(                            new Rect(                                0,itemToNavigateto.getWIDth(),itemToNavigateto.getHeight()));                    }                });            }        };    }}

和布局文件:

<?xml version="1.0" enCoding="utf-8"?><androID.support.design.Widget.CoordinatorLayout    xmlns:androID="http://schemas.androID.com/apk/res/androID"    xmlns:app="http://schemas.androID.com/apk/res-auto"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent">    <androID.support.design.Widget.AppbarLayout        androID:layout_wIDth="match_parent"        androID:layout_height="wrap_content">        <androID.support.v7.Widget.Toolbar            androID:ID="@+ID/toolbar"            androID:layout_wIDth="match_parent"            androID:layout_height="?attr/actionbarSize"            androID:background="?attr/colorPrimary"            app:layout_scrollFlags="scroll|enteralways" />    </androID.support.design.Widget.AppbarLayout>    <androID.support.v4.Widget.nestedScrollVIEw        androID:layout_wIDth="match_parent"        androID:layout_height="match_parent"        app:layout_behavior="@string/appbar_scrolling_vIEw_behavior">        <linearLayout            androID:layout_wIDth="match_parent"            androID:layout_height="match_parent"            androID:orIEntation="vertical">            <button                androID:ID="@+ID/navigator_button"                androID:layout_wIDth="wrap_content"                androID:layout_height="wrap_content"                androID:text="@string/scroll_to_item" />            <TextVIEw                androID:layout_wIDth="wrap_content"                androID:layout_height="wrap_content"                androID:text="@string/item1"/>            <TextVIEw                androID:layout_wIDth="wrap_content"                androID:layout_height="wrap_content"                androID:text="@string/lorem_ipsum"                androID:paddingBottom="20dp"/>            <!-- Items 2 to 5 omitted for brevity -->            <TextVIEw                androID:layout_wIDth="wrap_content"                androID:layout_height="wrap_content"                androID:text="@string/item6"/>            <TextVIEw                androID:ID="@+ID/itemToNavigateto"                androID:layout_wIDth="wrap_content"                androID:layout_height="wrap_content"                androID:text="@string/lorem_ipsum"                androID:paddingBottom="20dp"/>                      </linearLayout>    </androID.support.v4.Widget.nestedScrollVIEw></androID.support.design.Widget.CoordinatorLayout>
解决方法 你需要添加androID:fillvIEwport =“true”

<androID.support.v4.Widget.nestedScrollVIEw        androID:layout_wIDth="match_parent"        androID:layout_height="match_parent"        app:layout_behavior="@string/appbar_scrolling_vIEw_behavior"        androID:fillVIEwport="true">
总结

以上是内存溢出为你收集整理的android – 在CoordinatorLayout中滚动查看仅显示部分视图全部内容,希望文章能够帮你解决android – 在CoordinatorLayout中滚动查看仅显示部分视图所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1123693.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存