我有一个自定义视图组,当我调用菜单按钮时,我的屏幕会向右滑动,让我们看到第二个布局(我的菜单)。
我的项目中有类似的活动没有菜单,而且工作正常。 它是一个简单的视图,其中包含一个列表视图,它显示来自webservices的数据。
当我参加此活动时,我的listView的内容在数据到达时不会刷新。但是当我按下菜单按钮时,视图翻转并显示列表视图的内容(没有图像,当我滚动listView时出现)。
这是按下菜单按钮时发生的事件:
public void customScroll(final int i) {
new Thread(new Runnable() {
@Override
public void run() {
if (i == 0) {
for (int inc = 200; inc >= 0; inc -= 5) {
final int inc2 = inc;
runOnUiThread(new Runnable() {
@Override
public void run() {
//cvg is the implementation of my customViewGroup
cvg.scrollTo(inc2);
}
});
try {
synchronized (this) {
wait(5);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
} else {
for (int inc = 0; inc <= 200; inc += 5) {
final int inc2 = inc;
runOnUiThread(new Runnable() {
@Override
public void run() {
cvg.scrollTo(inc2);
}
});
try {
synchronized (this) {
wait(5);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}).start();
这是我下载数据时在“runOnUiThread”中运行的主题:
private Runnable returnRes = new Runnable() {
@Override
public void run() {
if (doubleVideos != null && doubleVideos.size() > 0) {
videoAdapter.notifyDataSetChanged();
for (int i = 0; i < doubleVideos.size(); i++) {
videoAdapter.add(doubleVideos.get(i));
}
}
videoAdapter.notifyDataSetChanged();
}
我活动的行为很奇怪,问你是否不理解。
我已经尝试过尝试过:
cvg.invalidate();
cvg.scrollTo(20);
//listView.notify();
listView.refreshDrawableState();
cvg.refreshDrawableState();
listView.bringToFront();
listView.invalidate();
cvg.invalidate();
listView.refreshDrawableState();
对于那些认真对待这个人的人来说,要感谢他们。
答案 0 :(得分:0)
我之前也遇到过同样的问题..,我认为您没有以正确的方式实现 ViewGroup !在自定义ViewGroup中,为每个孩子调用measure
方法,然后在layout
上调用onLayout
方法。