显示视图有BUG
popa101 opened this issue · 10 comments
一开始显示loading_view,后 再显示empty_view, loading_view没有关闭, 两个view重叠了. 没有关闭view的方法
确实有这个bug,失望修复下
不同状态的ID有没有按规则设置?代码贴出来看一下
loadingView的id 为-1,猜测可能跟名字与其他框架重名有关
解决:
showLoading 方法处添加: if (view.getId() == -1) {
mLoadingView.setId(R.id.loading_view);
}
解决办法二:
showViewById更改为这种方式
private void showViewById(View view) {
final int childCount = getChildCount();
for (int i = 0; i < childCount; i++) {
View view1 = getChildAt(i);
view1.setVisibility(View.GONE);
}
view.setVisibility(VISIBLE);
}
今天在改代码时也出现了这个bug,给视图的根布局设置一个id就可以了。否则getId拿到的是-1.
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/empty_view"
...>
...
</FrameLayout>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/error_view"
...>
...
</FrameLayout>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/loading_view"
...>
...
</FrameLayout>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/no_network_view"
...>
...
</FrameLayout>
四种自定义布局文件按上面的格式设置对应的 ID
,这样也会重叠? @gituserboy @lindroy
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/empty_view" ...> ... </FrameLayout> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/error_view" ...> ... </FrameLayout> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/loading_view" ...> ... </FrameLayout> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/no_network_view" ...> ... </FrameLayout>
四种自定义布局文件按上面的格式设置对应的
ID
,这样也会重叠? @gituserboy @lindroy
这样不会,但是我昨天在库里加了一个need_login.xml布局,根布局没有设置Id,getId()时的值就是-1,出现了重叠。
我那个已解决,就是id得按 文档那样写死就好了
请仔细阅读 README 注意事项部分
注意事项
必须按如下规则设置对应视图根节点的
view id
,否则会导致试图重叠
必须按如下规则设置对应视图根节点的view id
,否则会导致试图重叠
必须按如下规则设置对应视图根节点的view id
,否则会导致试图重叠
1. 如果使用自定义属性
app:emptyView="@layout/..."
app:errorView="@layout/..."
app:loadingView="@layout/..."
app:noNetworkView="@layout/..."
需要设置:
- 加载中视图的id必须为:
loading_view
- 空视图的id必须为:
empty_view
- 错误视图的id必须为:
error_view
- 无网络视图的id必须为:
no_network_view
- 自定义提示文本的id必须为:
status_hint_content
2. 如果需要点击某个 view
进行重试, 需要设置:
- 空视图内对应的view id:
empty_retry_view
- 错误视图内对应的view id:
error_retry_view
- 无网络视图内对应的view id:
no_network_retry_view
因为view我是new出来,未配置相关id。谢谢您的回复