我有一个ScrollView-> TableLayout-> TableRow
在TableLayout内部,有些TableRows可见,有些已消失。因为点击TableRow,它下面的其他一些行将变得可见。 它现在一切正常,除了我转为可见的行可能不会出现在屏幕上,因为它们不在滚动视图显示区域。 我想在没有用户滚动的情况下显示它们,所以我需要获得行位置来进行滚动。 问题是,Draw inst立刻,所以我不能得到这个位置。我尝试使用invalidate和postinvalidate但是工作正常。
我该怎么办?
编辑:我真正想要的是一种更新我的观点的位置和大小的方法。
我在这里找到了解决方案(Android) Why won't invalidate() update my buttons immediately?
答案 0 :(得分:0)
您知道新近可见细胞的绘制位置吗?如果你有一个位于其上方的单元格(如果你用addView()添加行,这将是有意义的),你可以在新的可见单元格上方获得单元格的底部位置(使用{ {3}}然后计算垂直偏移量),然后使用getChildAt()(或性感scrollTo())滚动到该位置 - 应该滚动以便新行位于屏幕顶部。突出显示新行也会帮助用户看到这是新内容。
答案 1 :(得分:0)
如果你可以计算 rowHeight。或每行的高度。那么你可以计算行(视图)可能出现的位置。
你可以打电话给
scrollView.scrollBy(x, y)
或
scrollView.scrollTo(x, y)
滚动视图中的。