【问题标题】:android ListView ,setSelection() has no effect after setFlags(...FULLSCREEN)android ListView ,setSelection() 在 setFlags(...FULLSCREEN) 之后没有效果
【发布时间】:2014-12-10 19:03:36
【问题描述】:

现在我遇到了这个问题:

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

  2. 我希望它在未完成或取消时全屏显示,我认为这很容易通过 Window dialogWindow = mProgressDialog.getWindow(); dialogWindow.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

  3. 我还希望它在完成后停止全屏显示(即我希望显示状态栏)。我还希望显示 Listview 中的第一项。

  4. -------- 这是问题发生的时间。---- ----

我喜欢 dialogWindow.setFlags(0, WindowManager.LayoutParams.FLAG_FULLSCREEN);

而且运行良好。出现状态栏。

然后我使用 mListview.setSelection(0),我想它可以为我带来第一个项目。

但是,它根本没有效果。知道这是如何发生或如何解决的吗?任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: android listview fullscreen


    【解决方案1】:

    你可以试试这个方法,也许对你有帮助..

    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.
    

    【讨论】:

    • 我想我已经尝试过一次并以非常奇怪的行为结束:它滚动了一下,并在没有到达所选项目的情况下过早停止。更重要的是,我宁愿让它立即专注于第一项而不需要任何滚动。
    【解决方案2】:

    你必须使用

    mListview.clearFocus();
    

    打电话之前

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

    在mListView的一个post方法中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-12
      • 1970-01-01
      • 1970-01-01
      • 2019-03-06
      相关资源
      最近更新 更多