Cor*_*ger 10 android android-widget
下面的代码不会更改所有ListView's行的文本,因为getChildCount()它不会获取所有ListView's行,而只会获取可见的行.
for (int i = 0; i < listView.getChildCount(); i++)
{
View v = listView.getChildAt(i);
TextView tx = (TextView) v.findViewById(R.id.mytext);
tx.setTextSize(newTextSize);
}
Run Code Online (Sandbox Code Playgroud)
所以我该怎么做?
当ListView's行变得可见时是否有用于获取通知的代码,因此我可以设置其文本大小?
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;
Run Code Online (Sandbox Code Playgroud)
...
由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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21359 次 |
| 最近记录: |