欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

在onclicklistener()里面动态改变控件的高度有关问题

更新时间: 2014-01-05 02:35:02 责任编辑: Author_N1

 

在OnClickListener()里面动态改变控件的高度问题
如题,想实现,当点击一个控件的时候,后台每过100millis就减少控件的高度,最后再隐藏控件。
我写的代码

@Override
public void onClick(View v) {
String pos = (String)v.getTag();
TableRow tr = (TableRow)findViewById(R.id.row_one_hide);
GridView gv = (GridView) tr.getChildAt(0);
LayoutParams params = gv.getLayoutParams();
int height = 100;
while(height > 0){
params.height = height;
height -= 12;
try {
Thread.currentThread().sleep(100);
gv.setLayoutParams(params);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
params.height = params.WRAP_CONTENT;
gv.setLayoutParams(params);
tr.setVisibility(View.GONE);
}

为什么这段代码的效果是线程停一段时间(这段时间为Thread.sleep()语句执行的次数*100 millis),然后这个控件就瞬间消失,不是每隔一段时间消失一小段(12px),最终才消失。
求高手解决这个问题
--参考方法--
引用:
今天想到一个实现的方法了
新启动一个线程,在这个线程里每隔100毫秒就往主线程的MessageQueue里面发送一条更新控件高度的Message.
在Handler里面,获取这个Message里面发送过来的控件的高度值,然后更新控件高度就行了。

求高手有其他思路吗?

我想说的都知道了,楼主,你知道的太多了!
ps:就你说的这么做,不要放在主线程,要不然就会出现你上面出现的问题
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:35:02
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/11701/
本文WWW.DOC100.NET DOC100.NET版权所有。