Android 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

我的问题与这个未回答的问题非常相似,但有一些小的差异,我将解释:

我的ScrollView开始滚动到底部,显示TabHost内容,而不是其顶部的内容(您可以在链接的问题中看到屏幕截图,非常类似)

如果我手动向上滚动,在不同的选项卡中单击不会影响滚动视图,问题只出现在第一次显示时这是其他问题之间的区别。

我尝试过但没有成功的事情:

  • 使ScrollView中的顶部组件可聚焦,这样它们将获得焦点而不是选项卡
  • 使用
    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!