java动态地向FlipperView添加文本视图,并使用不同的滚动方式
我正在开发一个应用程序,几周前开始学习Java。在这一点上,我正努力去做一些事情,但我不知道出了什么问题
因此,问题如下。我有一个FlipperView,我想在其中动态添加文本视图,我应该能够在它们之间导航。这些文本视图具有相同的内容和布局,它们之间唯一的区别是它们的“ScrollY”属性。我希望第一个文本视图有一个0的滚动条,以便可以从它的开头看到文本。然后,我希望下一个TextView有一个0+x的滚动条,其中x是TextView的高度(最初定义为match_parent)。下一个应该有一个2x的卷轴,等等
为了得到这份工作,我做了很多努力。首先,我使用一个。邮递现在,我可以更改第一个文本视图的滚动条。对于其他视图,我使用For a循环。此时,文本视图已正确创建,我可以使用FlipperView在它们之间导航。但是,setScroly函数在for循环中不起作用。我尝试用一个任意整数代替TextView的动态高度来填充它,但没有成功,所以我猜在这种情况下函数根本不起作用。这是我的代码(循环的数量目前是固定的):
public int formatText(Context context, ViewFlipper textFlipper) {
int nbOfViews = 1;
final int[] viewMaxHeight = {0};
final int[] lineSpacing = {0};
textContent = context.getResources().getString(R.string.dummyText);
final TextView flipperView = new TextView(context, null, R.style.flipperText);
flipperView.setText(textContent);
textFlipper.addView(flipperView);
flipperView.post(new Runnable() {
@Override
public void run() {
viewMaxHeight[0] = flipperView.getHeight();
lineSpacing[0] = Math.round(flipperView.getLineSpacingExtra());
}
});
for(int i = 0; i < 2; i++) {
TextView flipperViewExtra = new TextView(context, null, R.style.flipperText);
flipperViewExtra.setText(textContent);
flipperViewExtra.setScrollY(viewMaxHeight[0] * nbOfViews + lineSpacing[0]);
textFlipper.addView(flipperViewExtra);
nbOfViews++;
}
return nbOfViews;
}
感谢您的帮助,谢谢
# 1 楼答案
您使用的是THREAD,THREAD倾向于通过缓存变量来优化性能。因此,线程之外的任何机会都不会“看到”内存中的更改。要强制线程查看内存中的更改,必须将变量声明为volatile。范例