当前位置: 首页 > 面试题库 >

Android侧栏,例如facebook或firefox

袁建木
2023-03-14
问题内容

有了新的facebook应用程序,它带有一个隐藏的侧边栏,我很想在我的应用程序中使用类似的东西。看起来有点像firefox mobile的侧边栏…

除了重新实现ViewPager之外,您是否有其他实现方法?我已经尝试过Horizo​​ntalScrollView了,但这也会导致它的重新实现。

除了这两种以外,我没有看到其他任何方式……有什么建议吗?

提前致谢


问题答案:

我想出了一个解决方案…我不知道它是否完美,但效果很好。

因此,我要做的是将一个单独的FrameLayout堆叠在一起,然后将顶部布局动画化,使其滑动到屏幕右侧(只需要调用slideTo或scrollBy。基本上就是这样!非常简单有效!(虽然代码不是很漂亮:P)

编辑:

一些代码示例。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFF" >

        <include
        android:id="@+id/menu_layout"
            layout="@layout/menu_list"
            android:visibility="invisible"/>

        <include
            android:id="@+id/news_list_parent"
            layout="@layout/main_news_list" 
            />

</FrameLayout>

这是布局xml,非常简单。包含的.xml是带有标题和列表视图的简单LinearLayouts。

“魔术”发生在动画中:

protected void applyTransformation(float interpolatedTime, Transformation t) {
    int newOffset;
    if(expanded) {
        newOffset = 0;
        newOffset = (int)(endOffset*(1-interpolatedTime));
    } else {
        newOffset = (int)(endOffset*(interpolatedTime));
    }
    view.scrollTo(-newOffset, 0);
}

endOffset是目标运动。我在开始动画之前进行了设置,然后将要设置动画的视图(在这种情况下为id =
news_list_parent的视图)设置在构造函数上。

但是仅仅为了了解它是如何工作的,就制作一个按钮,它的监听者会做这样的事情:

if(viewBeneath.getVisibility() == View.INVISIBLE) {
    viewBeneath.setVisibility(View.Visible);
    viewToSlide.slideTo(-(width-50), 0);
}

最后覆盖后退按钮以执行按钮的相反操作

if(viewBeneath.getVisibility() == View.VISIBLE) {
    viewToSlide.slideTo(0, 0);
    viewBeneath.setVisibility(View.Visible);
}

将此读为伪代码=)这是我一开始所做的,但是代码丢失了:P



 类似资料:
  • 让我们看看如何添加侧栏。我们的APP可能包含两种侧栏,一个在左边,另一个在右边。我们应该在body的开始处添加侧栏的htmlbody: <body> <!-- First, we need to add Panel's overlay that will overlays app while panel is opened --> <div class="panel-overlay

  • 可以从左侧或者右侧滑出的面板。 使用侧栏 在任何元素上增加 .open-panel 类都可以使它能点击打开侧栏。如果有多个侧栏,你可以通过 data-panel='{panel的选择}'来指定具体打开哪一个侧栏 在任何元素上增加 .close-panel 类都可以使他点击关闭侧栏,因为侧栏只能同时打开一个,所以关闭的时候你不用指定是哪一个侧栏。 可以通过 .panel-left 或者 .panel

  •        在LSV中可以控制侧栏的显隐(默认显示),在“视图”菜单栏中“视图角度”栏点击“侧栏”,控制侧栏的显隐。侧栏选中高亮,可以看到侧栏:        不选中,就隐藏了侧栏,如下图:

  •        在LSV中可以控制侧栏的显隐(默认显示),在“视图”菜单栏中“视图角度”栏点击“侧栏”,控制侧栏的显隐。侧栏选中高亮,可以看到侧栏:        不选中,就隐藏了侧栏,如下图:

  • 创建侧边栏对于以下目的很有用: 将 相关文档 分组 为每篇文档 显示一个侧边栏 提供带有 下一页/上一页(next/previous)按钮的 分页导航 要为你的 Docusaurus 网站添加侧边栏的话,需要: 创建一个导出(export) 侧边栏对象(sidebar object) 的文件。 将此对象直接或通过 @docusaurus/preset-classic 传递给 @docusaurus

  • 侧栏是和菜单栏一样,和用户直接交互并呈现用户操作结果和数据的地方,并且包含了很多菜单栏的快捷操作功能。整体上分为场景数据和搜索两部分。 场景数据 场景数据的三维场景包括我的地标、图层和地形3个部分。场景数据以树状结构向用户呈现,每个结构都带一个复选框,可以用于控制数据的显示和隐藏。子节点(具体的元素),或者图层,可以通过双击快速定位(根节点双击是展开和合并)。 【我的地标】:用户自己添加的点、线、