下面的代码不会更改所有ListVIEw行的文本,因为getChildCount()不会获取所有ListVIEw的行,而只会获取可见的行.
for (int i = 0; i < ListVIEw.getChildCount(); i++){ VIEw v = ListVIEw.getChildAt(i); TextVIEw tx = (TextVIEw) v.findVIEwByID(R.ID.mytext); tx.setTextSize(newTextSize);}
所以我该怎么做?
当ListVIEw的行变得可见时是否有用于获取通知的代码,因此我可以设置其文本大小?
解决方法:
来自API Demos的List13使用OnScrollStateChanged执行类似 *** 作.但是,可能有更好的方法:
public voID onScrollStateChanged(AbsListVIEw vIEw, int scrollState) { switch (scrollState) { case OnScrollListener.SCRolL_STATE_IDLE: mBusy = false; int first = vIEw.getFirstVisibleposition(); int count = vIEw.getChildCount(); for (int i=0; i<count; i++) { TextVIEw t = (TextVIEw)vIEw.getChildAt(i); if (t.getTag() != null) { t.setText(mStrings[first + i]); t.setTag(null); } } mStatus.setText("IDle"); break;
.
.
.
由Corey Trager编辑:
以上肯定指出了我正确的方向.我发现处理OnScrollListener.onScroll比onScrollStateChanged工作得更好.即使我在onScrollSgtaetChanged中删除了case语句并处理了每个状态更改,一些文本也没有调整大小.但是使用onScroll,事情似乎有效.
所以,我看似工作的代码看起来像这样:
public voID onScroll(AbsListVIEw v, int firstVisibleItem, int visibleCount, int totalitemCount){ ListVIEw lv = this.getListVIEw(); int childCount = lv.getChildCount(); for (int i = 0; i < childCount; i++) { VIEw v = lv.getChildAt(i); TextVIEw tx = (TextVIEw) v.findVIEwByID(R.ID.mytext); tx.setTextSize(textSize); }}
总结 以上是内存溢出为你收集整理的在Android ListView中,我如何迭代/ *** 纵所有子视图,而不仅仅是可见视图?全部内容,希望文章能够帮你解决在Android ListView中,我如何迭代/ *** 纵所有子视图,而不仅仅是可见视图?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)