ScrollView下嵌套GridView或ListView默认不在顶部的解决方法

当ScrollView下嵌套GridView或ListView时,如果内容超过一屏默认位置不在ScrollView的顶部,用scrollViewMsg.scrollTo(0,0)设置也不起作用,这是因为嵌套GridView或ListView获了焦点,解决方法有如下几种:

方法1把ScrollView里的第一个View获取焦点:

baseView.setFocusable(true);
baseView.setFocusableInTouchMode(true);
baseView.requestFocus();

方法2把GrideView或ListView焦点禁用:

grid.setFocusable(false);

方法3重写ScrollView的方法:

@Override
        protected int computeScrollDeltaToGetChildRectOnScreen(Rect rect) {
                //禁止scrollView内布局变化后自动滚动
                return 0;
        }

QQ交流群:6399844

时间: 2024-12-23 23:30:00

ScrollView下嵌套GridView或ListView默认不在顶部的解决方法的相关文章

ScrollView中嵌套GridView,Listview的办法

按照android的标准,ScrollView中是不能嵌套具有滑动特性的View的,但是有时如果设计真的有这样做的需要,或者为了更方便简单的实现外观(比如在外在的大布局需要有滑动的特性,并且内部有类似于List的UI结构,那么ListView + Adpater的方式来实现里面的效果就很方便,算是违规抄近道的一种方式吧),有时就会不得不采用这种怪异的组合方式. 先说下这种方式如果不做特殊处理时会出现的冲突和问题: 1,在SrollView中嵌套ListView,ListView的显示会有问题,只

ScrollView中嵌套GridView,ListView只显示一行的解决办法

转载:http://blog.csdn.net/luohai859/article/details/39347583 关于为什么只显示一行,个人理解是:如果单独使用GridView和ListView,里面的内容是固定的,底层系统很容易计算出控件要占用的宽高,当外面嵌套一层ScrollView后,就能做上下或左右滑动,但能滑动多少系统不知道,这时就需要你给计算出一个滑动区域给ScrollView.而这个数值就是通过GridView和ListView中的内容总的宽高之和.有更精确的理解欢迎赐教.解决

android ScrollView中嵌套GridView,ListView只显示一行的解决办法

注:本文是由网上大神分享的解决方案汇集而成 方法一: 重写ListView.GridView: 重写ListView: 1 public class MyListView extends ListView { 2 3 public MyListView(Context context) { 4 // TODO Auto-generated method stub 5 super(context); 6 } 7 8 public MyListView(Context context, Attrib

解决ScrollView下嵌套ListView或Gridview进页面不在顶部的问题

最近项目用到了scrollview内部嵌套ListView或Gridview,本来这样做不太好,但是接口不提供网页资源,只有自己一个一个View的拼凑了,苦逼的程序猿,大家都懂的, 但是写好后发现一个问题,每次进入这个页面后,scrollview不是显示在顶部,而是底部或者中间,令老夫很是惆怅啊,经过千百度万谷歌,终于试出了一个方法,可以解决这个问题,但是也不是完美解决,偶尔也会没效果的,代码如下: scrollview.smoothScrollTo(0,0); 在listview绘制好数据后使

解决ScrollView下嵌套ListView、GridView显示不全的问题(冲突)

原文地址:http://blog.csdn.net/cs_li1126/article/details/12906203 一.使用网上用的动态改变listview高度的方法,该方法只适用于item布局是LinearLayout布局的情况,不能是其他的,因为其他的Layout(如RelativeLayout)没有重写onMeasure(),所以会在onMeasure()时抛出异常.所以使用限制较大. [java] view plaincopy public class Utility { publ

Android 嵌套GridView,ListView只显示一行的解决办法

重写ListView.GridView即可: public class MyListView extends ListView { public MyListView(Context context) { // TODO Auto-generated method stub super(context); } public MyListView(Context context, AttributeSet attrs) { // TODO Auto-generated method stub su

scrollview 中嵌套多个listview的最好解决办法

在scrollview中嵌套多个listview的显示问题. 只需要调用如下的方法传入listview和adapter数据即可. /** * 动态设置ListView组建的高度 */ public static void setListViewHeightBasedOnChildren(ListView listView,Adapter adapter) { Adapter listAdapter = (Adapter) listView.getAdapter(); if (listAdapte

谷歌、火狐浏览器下实现JS跨域iframe高度自适应的完美解决方法,跨域调用JS不再是难题!

谷歌.火狐浏览器下实现JS跨域iframe高度自适应的解决方法 导读:今天开发的时候遇到个iframe自适应高度的问题,相信大家对这个不陌生,但是一般我们都是在同一个项目使用iframe嵌套页面,这个ifame高度自适应网上一搜一大把,今天要讲的如何在不同的网站下进行相互的调用跟在同一个网站下是一个效果:例如我在自己的项目里面Iframe  了第一博客的页面  http://www.diyibk.com/   当第一博客的页面高度变化了怎么通知父页面呢? 这个时候在谷歌下肯定是拿不到 ifram

关于Windows_8.1/Windows 7下普通用户运行软件提示需要输入管理员密码解决方法

关于Windows_8.1/Windows 7下普通用户运行软件提示需要输入管理员密码解决方法 1. 问题起因 最近遇到一个比较棘手问题,顺丰速运修改了快递单填写方式,必须要安装他们公司开发的一个软件(软件名叫"速打线下用户专用版"),这个软件非常奇葩,只要是普通用户运行该软件,就弹出"用户控制"的对话框要求输入管理员密码,要么就把用户账户加入管理员组才能正常运行,作为一家比较有规模的企业,怎么可能随便开放管理员权限啊!这样做将会有无尽麻烦(如果你是管理员,你懂的)