`
艳过留痕
  • 浏览: 40367 次
社区版块
存档分类

获取View距离父视图的高度

 
阅读更多
/**
     * m_scrollview代表父视图
     * @param descendant    子视图
     * @return
     */
    public int getRootHeight(View descendant) {
        int[] coord = new int[2];
        float[] pt = {coord[0], coord[1]};
        //转换为直接父窗口的坐标
        pt[0] += descendant.getLeft();
        pt[1] += descendant.getTop();
        ViewParent viewParent = descendant.getParent();
        //循环获得父窗口的父窗口,并且依次计算在每个父窗口中的坐标
        while (viewParent instanceof View && viewParent != m_scrollview) {
            final View view = (View) viewParent;
            //转换为相当于可视区左上角的坐标,scrollX,scollY是去掉滚动的影响
            pt[0] += view.getLeft() - view.getScrollX();
            pt[1] += view.getTop() - view.getScrollY();
            viewParent = view.getParent();
        }
        coord[0] = (int) Math.round(pt[0]);
        coord[1] = (int) Math.round(pt[1]);
        System.out.println("coord[0]:" + coord[0]);
        System.out.println("coord[1]:" + coord[1]);
        return coord[1];
    }

 

分享到:
评论

相关推荐

    Android获取屏幕或View宽度和高度的方法

    在Android开发中,获取屏幕或View的宽度和高度是常见的需求,这有助于我们精确地布局UI元素或进行自定义视图的设计。以下将详细介绍几种不同的方法来获取这些信息。 首先,我们来了解一下如何在Activity中获取整个...

    Android View api 详解2

    在实际应用中,我们可能会结合`getWidth()`和`getHeight()`方法来获取View的实际尺寸,再配合`getLeft()`, `getTop()`, `getBottom()`, `getRight()`来精确计算View的几何信息。此外,`LayoutParams`也可以用来设置...

    Swift-获取状态栏的高度(不走SceneDelegate)

    为确保获取到准确的状态栏高度,可以在视图控制器的`viewDidLoad`或`viewWillAppear`方法中执行: ```swift override func viewDidLoad() { super.viewDidLoad() let statusBarHeight = UIApplication.shared....

    监听listview垂直滚动距离

    如果高度不同,需要遍历Adapter获取每个Item的高度进行累加。 博客地址提到的文章(http://blog.csdn.net/brastom/article/details/50638274)可能详细介绍了这个过程,包括如何创建OnScrollListener,如何计算滚动...

    View坐标位置XY轴详解

    - **getLeft()和getTop()**:这两个方法返回View相对于其父视图左边缘和上边缘的距离,即X轴和Y轴的起点坐标。 - **getWidth()和getHeight()**:这些方法提供View的宽度和高度,不包括内边距和边框。 2. **测量...

    android平板屏幕高度代码

    在Android开发中,了解并获取设备的屏幕高度是至关重要的,尤其在设计用户界面和优化布局时。"android平板屏幕高度代码"这个标题涉及到的是如何通过编程的方式获取Android平板上不同组件,如Action Bar、Status Bar...

    ios-多个label在view中居中显示.zip

    - `leading space to container`: 设置Label距离视图左边界的间距,值设为等于`trailing space to container`(Label距离视图右边界的间距),这样Label就能在视图宽度上居中。 - `top space to container`: 设置...

    listview 顶部view联动效果

    3. 使用动画API创建平滑的视图高度变化动画。 4. 将头部视图添加到ListView的顶部,并设置好初始状态。 总的来说,"listview 顶部view联动效果"是Android开发中一种增强用户体验的常见技术,它结合了ListView的滚动...

    Android 获取屏幕高度,标题高度,状态栏高度(实例代码)

    在Android开发中,获取屏幕高度、标题高度以及状态栏高度是非常常见的需求,这些信息对于布局设计和自定义视图的适配至关重要。以下将详细解释如何实现这些操作,并提供实例代码。 1. **获取屏幕高度**: 屏幕高度...

    Android 坐标系与视图坐标系图解分析

    在 Android 中,系统提供了很多获取坐标值、相对距离等方法,例如 View 提供的 getTop()、getLeft()、getRight()、getBottom() 等方法,用于获取 View 的相对位置。MotionEvent 提供的 getX()、getY()、getRawX()、...

    自定义的View始终位于弹起键盘顶部

    在键盘弹出的通知回调中,我们需要获取键盘的高度,以便计算出自定义视图应该移动的距离。`UIKeyboardFrameEndUserInfoKey`这个键可以从通知的`userInfo`字典中获取键盘的frame,转换为屏幕坐标系统后得到键盘的...

    滚动视图自适应键盘出现和消失

    接下来,为了使滚动视图自动滚动,我们需要计算出输入框相对于屏幕底部的距离,如果这个距离小于键盘高度,则滚动视图需要上移。这里我们可以使用`UIApplication.shared.keyWindow?.frame.size.height`来获取屏幕...

    让ScrollView头部的View实现伸缩动画效果

    在这个方法中,我们可以获取到滚动的距离,并根据这个距离来改变头部View的高度,从而实现伸缩效果。 以下是一个简单的实现思路: 1. **自定义ScrollView**: 创建一个名为`AnimatedHeaderViewScrollView`的类,...

    iOS端单个手指旋转视图

    在单指操作的场景下,可以模拟这个行为,当用户按住并移动手指时,根据手指移动的距离改变视图的缩放比例。 3. **UIRotationGestureRecognizer**:这个手势识别器用于识别旋转动作,是实现单指旋转视图的关键。当...

    Android中的getLeft()

    `getLeft()`方法的返回值是基于视图的布局属性计算得出的,这些属性包括`android:layout_width`(视图宽度)、`android:layout_height`(视图高度)、`android:layout_margin`(边距)等。在XML布局文件中,我们可以...

    自动调整大小的View

    例如,你可以获取到触摸事件,分析手指滑动的距离,从而更新 `View` 的尺寸。 描述中提到的“View里是些按钮”,这意味着这个自定义 `View` 可能包含多个子组件,如 `Button`。在这种情况下,开发者需要管理这些子...

    Android 控件说明

    - `layout_width` 和 `layout_height`:用于定义视图的宽度和高度,可以使用`match_parent`(旧称`fill_parent`)来匹配父视图大小,或`wrap_content`来让视图根据其内容自动调整大小,也可以直接指定像素值。...

    Android-培训--JFM.docx编程资料

    - 内边距(Padding)是指内容与视图边界之间的距离,可以通过`setPadding()`或`setPaddingRelative()`方法设置,也可以通过对应的方法获取。 - 外边距(Margins)是在`ViewGroup`中定义的,用于控制`View`与`...

    可跟随手指移动的view

    获取到这两个高度后,我们可以在设置View位置时进行限制,确保View不会超出屏幕或者覆盖状态栏和标题栏。 在实际应用中,我们需要将这个MoveableView添加到Activity的布局文件中,并指定适当的父布局,例如...

Global site tag (gtag.js) - Google Analytics