在ListView向上滚动时平滑隐藏操作栏

3
我想在滚动ListView时隐藏Actionbar。这应该看起来像Android Lollipop上的新Play Store应用程序。 如果我使用getActionBar()。hide(),则Actionbar会带有动画隐藏,但我想将Actiobar向上滚动。 这是如何工作的?
编辑
我已经发现ActionBar可以在API Level 21自动隐藏:
    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
    setContentView(R.layout.activity_main);
    m_lvTest = (ListView)findViewById(R.id.lvTest);
    ArrayList<String> values = new ArrayList<String>();
    for (int i = 0; i < 100; i++) {
        values.add(i+" Item");
    }
    CustomAdapter adapter = new CustomAdapter(this, R.id.lvTest, values);
    m_lvTest.setAdapter(adapter);
    m_lvTest.setNestedScrollingEnabled(true);

    getActionBar().setHideOnContentScrollEnabled(true);
}

但它不会滚动。它会向上动画。


谢谢。他们写道:“在适当的情况下,向下滚动时,应用栏可以滚动到屏幕外,为内容留出更多的垂直空间。向上滚动时,应该再次显示应用栏”,但他们没有写如何实现... :D - Zenco
在这里你可以找到一个很好的教程,我只需要提醒一下,如果你想要在棒棒糖之前实现这种行为,你需要使用RecyclerView。 https://mzgreen.github.io/2015/06/23/How-to-hideshow-Toolbar-when-list-is-scrolling%28part3%29/ - Tobrun
3个回答

0

正如Zenco所发现的那样,要实现类似Google Play Store的效果,请尝试以下方法...

  • 尝试使用Lollipop(API Level 21)中引入的this新工具栏小部件
  • 该小部件也受到早期版本Android中this API的支持。
  • 这篇Android开发者博客提供了如何使用它的良好内部信息。

0

有一个名为'setHideOnContentScrollEnabled(boolean)'的方法,属于ActionBar。它可以启用在内容滚动时隐藏操作栏。如果启用了此功能,则操作栏将随着嵌套滚动子视图的内容而滚动消失。操作栏必须处于覆盖模式才能启用内容滚动隐藏。当部分滚动超出屏幕时,操作栏被视为隐藏。调用显示将使其返回完整视图。我认为你可以尝试使用自己的代码来实现它。


1
我已经找到了解决方案。使用新的API,有一个新的视图工具栏,它可以作为常规视图。这就是在新的Google应用程序中(如Play Store)使用的视图。 - Zenco
@Zenco,您是指 Play Store 操作栏下面的导航标签吗?它们没有像海报描述的那样的效果。因为这些标签在向上滚动时不会隐藏。我获取了一些关于 ToolBar 的信息,但是我还没有尝试过它。并且通过 ToolBar,您能够隐藏标签吗? - user2716622

-1
请按照以下步骤解决您的问题:
-> 导入此包
import android.annotation.SuppressLint;
-> 将此行放置在onCreate()方法之前
@SuppressLint("NewApi")
-> 将此行放置在onCreate()方法中

getActionBar().hide();


我认为你误解了我的意思。我希望ActionBar可见,但如果我滚动屏幕,ActionBar应该向上滚动。 - Zenco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接