首先setEmptyView是AdapterView的方法。
从其源码可得setEmptyView方法仅仅是对其自身及emptyView的View.Visibility进行操作,并没有进行将emptyView添加为某个ViewGroup的childView操作。因此其生效的前提为:
- 当AdapterView需要显示emptyView时,emptyView必须已经被添加到当前界面所属DecorView的View树中。否则AdapterView是看不到了,但是emptyView你也看不到。。。
- 由于setEmptyView方法仅对View.Visibility**进行操作。因此 AdapterView和emptyView必须具有人眼视觉意义上的同级(可替代)关系,可理解为AdapterView和emptyView的位置(即View的left、top、right、bottom这四个布局参数)一样,这样setEmptyView方法的效果才符合预期。否则当AdapterView消失时,EmptyView出现的位置没有跟AdapterView重合,那就尴尬了。。。
参考:
1. https://blog.csdn.net/androidstarjack/article/details/62041446
2. http://androidxref.com/8.0.0_r4/xref/frameworks/base/core/java/android/widget/AdapterView.java