java–Android ScrollView不是从顶部开始,而是在GridView的开头

java–Android ScrollView不是从顶部开始,而是在GridView的开头,第1张

概述我有一个ScrollView的问题,里面有个性化的GridView和其他视图.第一次启动Activity时,ScrollView从顶部开始,但是如果我访问Activity其他时候ScrollView从头开始GridView.I使用了thislink中为我的GridView找到的ExpandableHeightGridView类.Activity布局的xml代码是这样的:<Scrol

我有一个ScrollVIEw的问题,里面有个性化的GrIDVIEw和其他视图.第一次启动Activity时,ScrollVIEw从顶部开始,但是如果我访问Activity其他时候ScrollVIEw从头开始GrIDVIEw.I使用了this link中为我的GrIDVIEw找到的ExpandableHeightGrIDVIEw类.
Activity布局的xml代码是这样的:

<ScrollVIEw xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:ID="@+ID/scrollVIEwLuogo"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:background="#fff" ><relativeLayout    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:background="#fff" >    <linearLayout        androID:ID="@+ID/linearLayout2"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content" >        <ImageVIEw            androID:ID="@+ID/imageVIEw1"            androID:layout_wIDth="150dp"            androID:layout_height="100dp"            androID:layout_marginleft="14dp"            androID:layout_marginRight="10dp"            androID:layout_margintop="10dp"            androID:adjustVIEwBounds="true"            androID:maxHeight="200dp"            androID:maxWIDth="200dp"            androID:scaleType="fitXY"            androID:src="@androID:drawable/ic_menu_gallery" />        <linearLayout            androID:ID="@+ID/linearLayout1"            androID:layout_wIDth="wrap_content"            androID:layout_height="wrap_content"            androID:layout_margintop="10dp"            androID:orIEntation="vertical" >            <TextVIEw                androID:ID="@+ID/nomeTVActivityLuogo"                androID:layout_wIDth="wrap_content"                androID:layout_height="wrap_content"                androID:textStyle="bold"                androID:textSize="17sp"                androID:textcolor="#005788" />            <TextVIEw                androID:ID="@+ID/indirizzoTVActivityLuogo"                androID:layout_wIDth="wrap_content"                androID:layout_height="wrap_content" />        </linearLayout>    </linearLayout>    <linearLayout        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:layout_below="@+ID/linearLayout2"        androID:layout_margintop="10dp"        androID:orIEntation="vertical" >        <ImageVIEw            androID:ID="@+ID/imageVIEwMappaLuogo"            androID:layout_wIDth="wrap_content"            androID:layout_height="60dp"            androID:layout_marginBottom="10dp"            androID:layout_marginleft="14dp"            androID:layout_marginRight="14dp"            androID:layout_margintop="5dp"            androID:scaleType="fitXY"            androID:src="@drawable/sfondo_mappa" />        <TextVIEw            androID:ID="@+ID/textVIEw1"            androID:layout_wIDth="wrap_content"            androID:layout_height="wrap_content"            androID:layout_marginleft="14dp"            androID:text="Immagini"            androID:textcolor="#97d6f9" />        <VIEw            androID:layout_wIDth="fill_parent"            androID:layout_height="2dp"            androID:layout_marginleft="14dp"            androID:layout_marginRight="14dp"            androID:layout_margintop="5dp"            androID:background="#97d6f9" />        <com.example.mappine.ExpandableHeightGrIDVIEw            androID:ID="@+ID/grIDVIEwLuogo"            androID:layout_wIDth="wrap_content"            androID:layout_height="match_parent"            androID:layout_marginBottom="10dp"            androID:layout_marginleft="10dp"            androID:layout_marginRight="10dp"            androID:layout_margintop="10dp"            androID:numColumns="3" >        </com.example.mappine.ExpandableHeightGrIDVIEw>    </linearLayout></relativeLayout>

我尝试过使用代码scrollVIEw.fullScroll(ScrollVIEw.FOCUS_UP);但它没有用.甚至使用scrollVIEw.scrollTo(0,0);我没有成功.
唯一有效的代码是:

    scrollVIEw.post(new Runnable()       {          public voID run() {              scrollVIEwLuogo.fullScroll(ScrollVIEw.FOCUS_UP);          }       });

但它从GrIDVIEw的顶部到屏幕的顶部进行快速动画,我不喜欢它.

有什么建议??

解决方法:

解:

好的抱歉,如果这是一个迟到的回复,但我偶然发现同样的问题(只是我使用的是ListVIEw),并且经过一些试验和错误,我找到了解决方案:

基本上问题在于GrIDVIEw / ListVIEw子项在您“Hack”并使用ExpandableHeightGrIDVIEw调整其内容时自动请求父焦点(ScrollVIEw),这在渲染布局后发生,因此您在尝试滚动它时会看到该动画使用scrollTo()(在创建布局之后发生,并且在调整grIDVIEw后调整大小,因此任何通用回调都无法以编程方式处理此问题).

那么,我发现最简单的解决方案是简单地在ListVIEw / GrIDVIEw上禁用focusable属性:

ListVIEw.setFocusable(false);

这样,当您第一次进入活动时,焦点将默认,而不依赖于ListvIEw / GrIDVIEw.

一切正常=)

总结

以上是内存溢出为你收集整理的java – Android ScrollView不是从顶部开始,而是在GridView的开头全部内容,希望文章能够帮你解决java – Android ScrollView不是从顶部开始,而是在GridView的开头所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/web/1098801.html

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

发表评论

登录后才能评论

评论列表(0条)

保存