Android ScrollView中的TabHost强制它滚动到底部
我的问题与这个未回答的问题非常相似,但有一些小的差异,我将解释: 我的ScrollView开始滚动到底部,显示TabHost内容,而不是其顶部的内容(您可以在链接的问题中看到屏幕截图,非常类似) 如果我手动向上滚动,在不同的选项卡中单击不会影响滚动视图,问题只出现在第一次显示时这是其他问题之间的区别。 我尝试过但没有成功的事情:Android ScrollView中的TabHost强制它滚动到底部,android,android-tabhost,android-scrollview,Android,Android Tabhost,Android Scrollview,我的问题与这个未回答的问题非常相似,但有一些小的差异,我将解释: 我的ScrollView开始滚动到底部,显示TabHost内容,而不是其顶部的内容(您可以在链接的问题中看到屏幕截图,非常类似) 如果我手动向上滚动,在不同的选项卡中单击不会影响滚动视图,问题只出现在第一次显示时这是其他问题之间的区别。 我尝试过但没有成功的事情: 使ScrollView中的顶部组件可聚焦,这样它们将获得焦点而不是选项卡 使用sv.fullScroll(View.FOCUS\u UP)强制滚动视图在onResum
sv.fullScroll(View.FOCUS\u UP)强制滚动视图在onResume()方法中滚动到顶部代码>或sv.scrollTo(0,0)代码>。此外,初始化过程中没有运气,但是对onResume()
的后续调用会有效地将其滚动到顶部
你知道为什么会这样吗?关于如何进一步调查的建议也很受欢迎。我有一个类似的问题,还没有解决。但是,要强制滚动视图,您需要通过一个单独的线程更新它的进度,以便在UI上发布。e、 g
quickScroll.post(new Runnable() {
@Override
public void run() {
quickScroll.scrollTo(0, 54);
}
});
其中quickScroll是我的滚动视图。我相信这样做的原因是您已经用图表定义了布局,或者从自定义视图组中对其进行了扩展。因此setContentView没有对scrollView的引用,因此您必须强制UI更新分配给scrollView的变量。可能太晚了,无法帮助您Pedro,但我确实找到了一个适合我的解决方案。我在TabHost源代码中注意到,如果视图中没有其他内容具有焦点,它会请求焦点。因此,我确保Scroll视图中的第一个组件是可聚焦的,并为其请求聚焦
// Get the first component and make sure it is focusable. Note you have to use setFocusableInTouchMode and not setFocusable for this to work.
TextView v = (TextView) view.findViewById(R.id.first_component_in_view);
v.setFocusableInTouchMode(true);
v.requestFocus();
希望这能帮助别人。不要迟到!我在onCreate()中实现了这一点,它就像一个符咒:)谢谢你分享它,Nathan!