android监听viewgroup是否隐藏
时间: 2023-08-24 14:33:17 浏览: 53
可以使用ViewTreeObserver来监听ViewGroup的可见性变化。
具体步骤如下:
1. 获取ViewGroup的ViewTreeObserver对象
```java
ViewTreeObserver viewTreeObserver = viewGroup.getViewTreeObserver();
```
2. 为ViewTreeObserver对象添加OnGlobalLayoutListener监听器
```java
viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// View树发生变化时回调
if (viewGroup.getVisibility() == View.GONE || viewGroup.getVisibility() == View.INVISIBLE) {
// ViewGroup被隐藏
} else {
// ViewGroup可见
}
}
});
```
3. 在不需要监听时移除OnGlobalLayoutListener监听器
```java
viewTreeObserver.removeOnGlobalLayoutListener(listener);
```
完整代码如下:
```java
ViewTreeObserver viewTreeObserver = viewGroup.getViewTreeObserver();
ViewTreeObserver.OnGlobalLayoutListener listener = new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// View树发生变化时回调
if (viewGroup.getVisibility() == View.GONE || viewGroup.getVisibility() == View.INVISIBLE) {
// ViewGroup被隐藏
} else {
// ViewGroup可见
}
}
};
viewTreeObserver.addOnGlobalLayoutListener(listener);
// 在不需要监听时移除OnGlobalLayoutListener监听器
viewTreeObserver.removeOnGlobalLayoutListener(listener);
```
值得注意的是,OnGlobalLayoutListener会在View树发生变化时回调,包括ViewGroup的可见性变化、View的添加、移除等操作。因此,需要在回调中判断ViewGroup的可见性是否发生变化。