android - 检查我的 ViewStub 是否膨胀/可见并且为空/非空?

标签 android viewstub

在问这个问题之前,我确实看到了很多其他帖子。似乎都没有确定的解决方案。

我遇到了 ViewStub 的问题,我想检查 ViewStub 是否膨胀(可见或不可见)。基于此,我还有很多其他事情要做。

我在每个 ViewStub 布局中使用两个 ViewStub 和一个按钮,即 layout/abc 和 layout/def 将膨胀另一个 ViewStub。

<ViewStub
 android:id="@+id/abc_stub"
 android:layout_width="wrap_content"
 android:layout_height="match_parent"
 android:layout="@layout/abc" />

 <ViewStub
 android:id="@+id/def_stub"
 android:layout_width="wrap_content"
 android:layout_height="match_parent"
 android:layout="@layout/def" /> 

我遇到的问题是未膨胀的 ViewStub 不为空,而我希望它为空。

有什么我遗漏的吗?

最佳答案

我想提出一个不依赖于监听器的替代解决方案。

View stub = findViewById(R.id.my_view_stub);
if(stub instanceof ViewStub) {
   // it have not been inflated
} else {
   // if have been inflated
}

这背后的逻辑是,在膨胀之后,ViewStub 会从 View 层次结构中移除并替换为膨胀布局上的内容。

这意味着 stub 将是一个 instanceOf FrameLayout/LinearLayout/Button 或膨胀布局上的任何其他 View 和实际的 ViewStub 实例已经消失了,如果您没有持有对它的引用,它甚至可能已被垃圾回收。

关于android - 检查我的 ViewStub 是否膨胀/可见并且为空/非空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28074303/

相关文章:

java - 安卓下载镜像

android - ViewStub 与 View.GONE

java - ViewStub 没有膨胀并且布局保持空白 - Android

android - 以编程方式定位 View stub

java - 应用程序在启动时以两 Pane 模式崩溃

android - 是否有适用于 Android 的蓝牙 4.0 api?

android - 是否可以同时调试 UI App 和 AAR?

android - 同时使用 setOnItemClickListener 和 setOnItemLongClickListener 两个监听器同时触发或同时工作。为什么

android - Youtube 视频无法播放

android - 如何使用 ButterKnife 注入(inject) ViewStub?