Android设置ListView滚动到某一位置

 更新时间:2016年10月2日 16:23  点击:1563
下面我们来看一篇关于Android设置ListView滚动到某一位置的例子,希望这篇文章能够帮助到各位朋友,具体的如下介绍。


最近在做项目的时候有一个功能就是点击某个按钮的时候要当前页面停留在某一个固定的位置,而当前页面只有一个ListView,如果是ScrollView,那么相信就会简单很多了,直接调用ScrollView.scrollTo(x,y);或者ScrollView.smoothScrollTo(x,y);这两个方法中的一个,然后给与指定的y值就OK,但是如果是ListView呢,原理是差不多的,这里也有两个方法
setSelection()和setSelectionFromTop()。

如果你要停留在当前第5个item的位置,也就是让第五个item置顶,那么直接listView.setSelection(5)就OK了,但是如果我要停留在更精准的位置上那么就要调用setSelectionFromTop()这个方法了,比如我要停留在第4个和第五个item正中间位置,那么假设第四个item的高度是100px,那么直接listView.setSelectionFromTop(5,50)就OK了.


解释一下这两个方法的原理:setSelectionFromTop()的作用是设置ListView选中的位置,同时在Y轴设置一个偏移量。

而setSelection()方法,传入一个index整型数值,就可以让ListView定位到指定Item的位置。

添加一个List1和一个Command1到Form1上,添加以下代码。运行后按Command1按钮看看是不是你想要的效果

/** Save the position **/
int currentPosition = listView.getFirstVisiblePosition();

//Here u should save the currentPosition anywhere

/** Restore the previus saved position **/
listView.setSelection(savedPosition);


当然,也可以使用这个方法:
 // save index and top position
int index = mList.getFirstVisiblePosition();
View v = mList.getChildAt(0);
int top = (v == null) ? 0 : v.getTop();

// ...

// restore
mList.setSelectionFromTop(index, top);

输入法什么时候显示或隐藏对于我们app中非常的有用哦,下面我们来看Andriod中输入法的显示与隐藏的例子吧


用InputMethodManager类自由控制输入法的显示与隐藏

//显示输入法
InputMethodManager mImm = (InputMethodManager) ActivityDetailsActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE);
mEtMessage.requestFocus();//获取焦点
mImm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);//弹出键盘
 

//隐藏输入法

mEtMessage.clearFocus();
mImm.hideSoftInputFromWindow(mEtMessage.getWindowToken(), 0);

在Android中onResume和onActivityResult的执行先后是什么样的呢,我们这里来为各位做一个关于onResume和onActivityResult的测试吧。

今天在做项目的时候要做到拍照的功能,当时就在想onResume和onActivityResult这两个方法谁会先执行呢,就测试了一下,打印一下当时的System.currentTimeMillis()看一下执行先后的顺序。

打印onResume:


@Override
protected void onResume() {
    super.onResume();
    Log.i("打印onResume====", System.currentTimeMillis()+"");
}

打印onActivityResult:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Log.i("打印onActivityResult====", System.currentTimeMillis()+"");
}
输出结果:


打印onActivityResult====: 1474678061478
打印onResume====: 1474678061864

ima555ge

 

ScrollView回顶部我们有一句话就可以实现在Android设置ScrollView回到顶部的方法有好几种了,这里我们就一起来了解一下吧。

例子

ScrollView.scrollTo(0,0);//直接置顶,瞬间回到顶部,没有滚动过程,其中Y值可以设置为大于0的值,使Scrollview停在指定位置。
ScrollView.fullScroll(View.FOCUS_UP);//类似于手动拖回顶部,有滚动过程
ScrollView.smoothScrollTo(0, 0);//类似于手动拖回顶部,有滚动过程,其中Y值可以设置为大于0的值,使Scrollview停在指定位置。

例子

String type = itemList.get(position).type;
if(type.equals(Constants.ARTICLE)){
 findViewById(R.id.article_scrollview).scrollTo(10, 10);
}else{
 ScrollView scrollView = (ScrollView) findViewById(R.id.gallery_scrollview);
 if(scrollView != null)
  scrollView.scrollTo(10, 10);
}

重点是scrollTo(10, 10)部分,就可以实现ScrollView滚回顶部。

[!--infotagslink--]

相关文章

  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • Android模拟器上模拟来电和短信配置

    如果我们的项目需要做来电及短信的功能,那么我们就得在Android模拟器开发这些功能,本来就来告诉我们如何在Android模拟器上模拟来电及来短信的功能。 在Android模拟...2016-09-20
  • 夜神android模拟器设置代理的方法

    夜神android模拟器如何设置代理呢?对于这个问题其实操作起来是非常的简单,下面小编来为各位详细介绍夜神android模拟器设置代理的方法,希望例子能够帮助到各位。 app...2016-09-20
  • android自定义动态设置Button样式【很常用】

    为了增强android应用的用户体验,我们可以在一些Button按钮上自定义动态的设置一些样式,比如交互时改变字体、颜色、背景图等。 今天来看一个通过重写Button来动态实...2016-09-20
  • Android WebView加载html5页面实例教程

    如果我们要在Android应用APP中加载html5页面,我们可以使用WebView,本文我们分享两个WebView加载html5页面实例应用。 实例一:WebView加载html5实现炫酷引导页面大多...2016-09-20
  • 深入理解Android中View和ViewGroup

    深入理解Android中View和ViewGroup从组成架构上看,似乎ViewGroup在View之上,View需要继承ViewGroup,但实际上不是这样的。View是基类,ViewGroup是它的子类。本教程我们深...2016-09-20
  • Android自定义WebView网络视频播放控件例子

    下面我们来看一篇关于Android自定义WebView网络视频播放控件开发例子,这个文章写得非常的不错下面给各位共享一下吧。 因为业务需要,以下代码均以Youtube网站在线视...2016-10-02
  • Android用MemoryFile文件类读写进行性能优化

    java开发的Android应用,性能一直是一个大问题,,或许是Java语言本身比较消耗内存。本文我们来谈谈Android 性能优化之MemoryFile文件读写。 Android匿名共享内存对外A...2016-09-20
  • Android设置TextView竖着显示实例

    TextView默认是横着显示了,今天我们一起来看看Android设置TextView竖着显示如何来实现吧,今天我们就一起来看看操作细节,具体的如下所示。 在开发Android程序的时候,...2016-10-02
  • android.os.BinderProxy cannot be cast to com解决办法

    本文章来给大家介绍关于android.os.BinderProxy cannot be cast to com解决办法,希望此文章对各位有帮助呀。 Android在绑定服务的时候出现java.lang.ClassCastExc...2016-09-20
  • Android 实现钉钉自动打卡功能

    这篇文章主要介绍了Android 实现钉钉自动打卡功能的步骤,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下...2021-03-15
  • Android 开发之布局细节对比:RTL模式

    下面我们来看一篇关于Android 开发之布局细节对比:RTL模式 ,希望这篇文章对各位同学会带来帮助,具体的细节如下介绍。 前言 讲真,好久没写博客了,2016都过了一半了,赶紧...2016-10-02
  • js实现文字垂直滚动和鼠标悬停效果

    这篇文章主要介绍了js实现文字垂直滚动和鼠标悬停效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-01-05
  • C#实现带进度条的ListView

    这篇文章主要介绍了C#实现带进度条的ListView 的相关资料,需要的朋友可以参考下...2020-06-25
  • Android中使用SDcard进行文件的读取方法

    首先如果要在程序中使用sdcard进行存储,我们必须要在AndroidManifset.xml文件进行下面的权限设置: 在AndroidManifest.xml中加入访问SDCard的权限如下: <!--...2016-09-20
  • 如何使用JavaScript实现无缝滚动自动播放轮播图效果

    这篇文章主要介绍了如何使用JavaScript实现“无缝滚动 自动播放”轮播图效果,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-08-20
  • Android开发之PhoneGap打包及错误解决办法

    下面来给各位简单的介绍一下关于Android开发之PhoneGap打包及错误解决办法,希望碰到此类问题的同学可进入参考一下哦。 在我安装、配置好PhoneGap项目的所有依赖...2016-09-20
  • 基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解

    这篇文章主要介绍了基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-08
  • 用Intel HAXM给Android模拟器Emulator加速

    Android 模拟器 Emulator 速度真心不给力,, 现在我们来介绍使用 Intel HAXM 技术为 Android 模拟器加速,使模拟器运行度与真机比肩。 周末试玩了一下在Eclipse中使...2016-09-20