android ListView,setSelection()在setFlags(…全屏)之后无效

android ListView,setSelection()在setFlags(…全屏)之后无效,android,listview,fullscreen,Android,Listview,Fullscreen,现在,我遇到了以下问题: 在我的Asynctask中,我在这个Listview上有一个ProgressDialog,它会不断更新并自动滚动(我使用类似于mListview.setSelection(mData.size()-1);滚动它) 我希望它在未完成或取消时全屏显示,我认为通过Window dialogWindow=mProgressDialog.getWindow()可以很容易地实现这一点; dialogWindow.setFlags(WindowManager.LayoutParams

现在,我遇到了以下问题:

  • 在我的Asynctask中,我在这个Listview上有一个ProgressDialog,它会不断更新并自动滚动(我使用类似于mListview.setSelection(mData.size()-1);滚动它)

  • 我希望它在未完成或取消时全屏显示,我认为通过Window dialogWindow=mProgressDialog.getWindow()可以很容易地实现这一点; dialogWindow.setFlags(WindowManager.LayoutParams.FLAG_全屏,WindowManager.LayoutParams.FLAG_全屏)

  • 我还希望它在完成时停止全屏显示(即,我希望状态栏显示)。我希望列表视图中的第一项也显示出来

  • --------------------这就是问题发生的时候--------------------

  • 我用like dialogWindow.setFlags(0,WindowManager.LayoutParams.FLAG_全屏)

    而且效果很好。此时会出现状态栏

    然后我使用mListview.setSelection(0),我认为它可以将我作为第一项


    然而,它根本没有效果。你知道这是怎么发生的或者怎么解决的吗?任何帮助都将不胜感激。谢谢大家!

    你可以试试这个方法,它可能对你有帮助

    http://developer.android.com/reference/android/widget/ListView.html#smoothScrollToPosition(int)
    
    
    
    public void smoothScrollToPosition (int position)
    
    Since: API Level 8
    Smoothly scroll to the specified adapter position. The view will scroll such that the         indicated position is displayed.
    
    Parameters
    position    Scroll to this adapter position.
    
    你必须使用

    mListview.clearFocus();
    
    打电话之前

    mListview.requestFocusFromTouch();
    mListview.setSelection(0);
    

    在mListView的一个post方法中。

    我想我试过一次,结果发现它有一个非常奇怪的行为:它滚动了一点,然后过早地停止,没有到达所选项目。更重要的是,我宁愿让它立即集中在第一个项目上,而不进行任何滚动。