Android - 用于捕获视图属性更改的监听器(例如 android:layout_marginTop)

问题描述 投票:0回答:2

在 Android 中,您可以创建一个监听器来捕获视图属性的变化(宽度/高度/边距/相对于屏幕顶部的位置)吗?

我想在layout_marginTop =“10dp”更改为不同值时触发事件。

android android-layout listener android-view android-event
2个回答
25
投票

如何实现一个 OnLayoutChangeListener ,当视图因布局更改而移动时会被调用

new View().addOnLayoutChangeListener(new OnLayoutChangeListener() {
    @Override
    public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft,
                    int oldTop, int oldRight, int oldBottom) {
        // TODO Auto-generated method stub  
    }
});

摘自 Android API:

添加一个 当视图的边界由于以下原因而发生变化时将调用的侦听器 布局处理。


0
投票

如果你想直接监听所有属性的变化,答案是否定的。

但是也许你可以监听

draw
提供的
preDraw
ViewTreeObserver
事件并检查这些事件发生时相关属性是否发生变化。

View
是您在屏幕上看到的内容,因此对其任何属性的更改都应该使其自身无效并触发
draw
preDraw
事件,对吧?

© www.soinside.com 2019 - 2024. All rights reserved.