android 中获取当前焦点所在屏幕中的位置 view.getLocationOnScreen(location)

  View view = getCurrentFocus();//获得当前焦点所在的view.

Java代码

  1. final int[] location = new int[2];
  2. view.getLocationOnScreen(location);

[java] view plaincopy

  1. final int[] location = new int[2];
  2. view.getLocationOnScreen(location);

这样就可以得到该视图在全局坐标系中的x,y值,(注意这个值是要从屏幕顶端算起,也就是索包括了通知栏的高度)//获取在当前屏幕内的绝对坐标

Java代码  

  1. location[0] x坐标
  2. location[1] y坐标

[java] view plaincopy

  1. location[0] x坐标
  2. location[1] y坐标

应用 ,我们可以用来记录上一次listview滚动到了那里

首先我们需要一个记录当前滚动位置的全局变量:

Java代码  

  1. private float OldListY = -1;

[java] view plaincopy

  1. private float OldListY = -1;

然后在 listView 的 onItemClick() 或 onItemLongClick() 事件中获取 OldListY:

Java代码  

  1. lstView.setOnItemClickListener(new OnItemClickListener()
  2. {
  3. public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
  4. {
  5. int Pos[] = { -1, -1 };  //保存当前坐标的数组
  6. arg1.getLocationOnScreen(Pos);  //获取选中的 Item 在屏幕中的位置,以左上角为原点 (0, 0)
  7. OldListY = (float) Pos[1];  //我们只取 Y 坐标就行了
  8. }
  9. });

[java] view plaincopy

  1. lstView.setOnItemClickListener(new OnItemClickListener()
  2. {
  3. public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)
  4. {
  5. int Pos[] = { -1, -1 };  //保存当前坐标的数组
  6. arg1.getLocationOnScreen(Pos);  //获取选中的 Item 在屏幕中的位置,以左上角为原点 (0, 0)
  7. OldListY = (float) Pos[1];  //我们只取 Y 坐标就行了
  8. }
  9. });

最后要做的就是在 setAdapter() 后恢复先前的位置:

Java代码  

  1. ...
  2. lstView.setAdapter(adapter); // 重新绑定Adapter
  3. lstView.setSelectionFromTop(index, (int) OldListY); // 恢复刚才的位置
时间: 2025-01-13 14:11:23

android 中获取当前焦点所在屏幕中的位置 view.getLocationOnScreen(location)的相关文章

Android笔记:获取url或uri字符串中的参数值

d Uri.parse(mArgUrl).getQueryParameter("id") Android笔记:获取url或uri字符串中的参数值

在WPF的MVVM框架中获取下拉选择列表中的选中项

文章概述: 本演示介绍如何在WPF的MVVM框架中,通过数据绑定的方式获取下拉列表中的选中项.程序运行后的效果如下图所示: 相关下载(代码.屏幕录像):http://pan.baidu.com/s/1sjwN357 在线播放:http://v.youku.com/v_show/id_XODA5OTYzMDU2.html 温馨提示:如果屏幕录像和代码不能正常下载,可站内留言,或发邮件到[email protected] XAML代码如下所示: <Window x:Class="Demo02E

获取cell中的button在整个屏幕上的位置

编写cell中得button点击事件 - (IBAction)showButtonClick:(id)sender { UIButton *button = (UIButton *)sender; UIWindow* window = [UIApplication sharedApplication].keyWindow; CGRect rect1 = [button convertRect:button.frame fromView:self.contentView];     //获取but

delphi中获取memo鼠标所在位置的行和列(通过EM_GETRECT消息取得Rect后,自己算一下)

也是看别人写的,但是不容易找到,就转发一篇delphi版本的 function GetLine(X, Y: integer): TPoint;var  OldFont : HFont;  Hand : THandle;  TM : TTextMetric;  Rect : TRect;begin  Hand := GetDC(mmotest.Handle);  try    OldFont := SelectObject(Hand, mmotest.Font.Handle);    try   

ajax异步处理时,如何在JS中获取从Servlet或者Action中session,request

ssh项目中,我需要登陆某个页面(如a.jsp),通过onblur()鼠标失去焦点后来触发js函数(函数是ajax请求)请求到相应的action,处理完成后将数据存放到session对象里面,然后在a.jsp中用el表达式获取想要的数据.可是问题来了,不知道为什么在打开浏览器第一次登录a页面时,a页面不会显示想要的数据,刷新后就有数据了,之后也正常. 后来查询了各种博客,各种网上的一些说法,最后总结出了自己的一套思路,仅供参考. 以下是在Action中 根据用户id查询出用户信息 .......

Android AudioManager获取媒体焦点

Android是多任务系统,Audio系统是竞争资源.Android2.2之前,没有内建的机制来解决多个程序竞争Audio的问题,2.2引入了称作AudioFocus的机制来管理对Audio资源的竞争的管理与协调.本文主要讲解AudioFocus的使用. 按照AudioFocus的机制,在使用AudioStream之前,需要申请AudioFocus,在获得AudioFocus之后才可以使用相应的AudioStream:如果有别的程序竞争你正在使用的AudioStream,你的程序需要在收到通知之

requests从api中获取数据并存放到mysql中

python的requests库是一个非常强大的库,requests的安装方法十分简单,用: pip install requests 即可安装requests,安装成功后: import requests 即可导入requests模块,requests有get和post两种方法: 1.requests.get()用法: url = "http://xxx" a_content = requests.get(url) aa = a_content.content #.content和.

Html5 中获取镜像图像 - 解决 WebGL 中纹理倒置问题

太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的漂亮人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino.否则,出自本博客的文章拒绝转载或再转载.谢谢合作. 我等 Web 前端之外行,解决起来这类问题,确实有些辣手! 幸好,还能查到一些实用的资料,外加之前在 iOS 中对 UIKit 与 QuarzCo

Android EditText 获取到焦点

1.第一种方式  这种方式点击输入框不能打开软键盘,点击第二次才可以打开 失去焦点 editText.setFocusable(false); 获取焦点 editText.setFocusable(ture); editText.setFocusableInTouchMode(true); editText.requestFocus(); 2.第一种方式 失去焦点 editText.clearFocus(); 获取焦点 editText.requestFocus(); 版权声明:本文为博主原创文