我有一个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的开头所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)