android - 抽屉导航多个容器和最佳实践

标签 android android-layout android-fragments navigation-drawer ui-patterns

我对android用户界面开发还比较陌生。所以我需要一些经验丰富的开发人员的帮助。
我正在用Navigation Drawer创建我的应用程序,我遇到了很多问题。
首先,这里是导航抽屉的示例代码。

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <!-- The main content view -->
    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    <!-- The navigation drawer -->
    <ListView android:id="@+id/left_drawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:choiceMode="singleChoice"
        android:divider="@android:color/transparent"
        android:dividerHeight="0dp"
        android:background="#111"/>
</android.support.v4.widget.DrawerLayout>

这是官方网站上的一个简单例子。
主内容视图(上面的framelayout)必须是第一个子视图
在抽屉布局中,因为xml顺序意味着z顺序,而
抽屉必须放在最上面。
在本例中,有两个嵌套视图:FrameLayout如前所述用于存储主内容,而ListView用于表示NavigationDrawer菜单。
这是我的问题。
真正的应用程序对整个活动并不是只有一个视图。大多数活动都有很多不同的视图,以及一些片段,以使ui更具响应性,并为用户提供更好的ux。我的活动当然是不同的观点和片段(相同活动的目的是什么?:)一个活动只有一个片段,另一个有几个片段,所以它们都是不同的…
在前面的代码示例中,只有一个容器用于保存片段只有一个片段,如果我的活动有两个、三个或更多片段,我需要做什么??在这种情况下,最好的解决方案是什么?
正如我所描述的,我的应用程序有多个活动,所以我的导航抽屉必须(根据android ui实践)在每个活动上,以便让用户导航到应用程序的顶层元素。在这种情况下,最好有一个FrameLayout(我已经阅读了stackoverflow上的答案),它将保存BaseActivity的所有配置内容。但只要导航抽屉在活动的xml布局中需要NavigationDrawerDrawerLayout应该调用BaseActivity方法。所有继承自setContentView活动的活动都应该使用一些技巧来设置自己的布局,否则重写此方法是没有意义的,因为它将破坏所有逻辑。在这种情况下该怎么办?
在google+或youtube中创建自定义导航抽屉列表的最有效方法是什么,而不使用复杂的视图层次结构,这使得gpu工作很辛苦,并且会给用户带来不好的体验?
对于第二个问题,我有一些想法如何解决,但不知道它是正确的方式和什么方法更好。
第一个想法是实现templateMethod模式。在BaseActivity中创建类似于BaseActivity的方法,并在所有活动中重写它,从xml中扩展所需的viewgroup并从该方法返回它,然后在整个视图中使用它。
或者显式地向活动添加视图,使用merge和include标记。
但这同样只对整个活动或一个片段有用,如果我们有更多的片段,使用嵌套的片段,我认为这是个坏主意。
此外,我的目标是优化视图层次结构,使其快速高效,以便即使在旧设备上也能带来平滑度。
我将非常感谢任何人谁可以描述或建议最有效和正确的方式来遵循在这种情况下,使用户界面的反应和代码可读性。
谢谢您。

最佳答案

1)从NavigationDrawer迁移到SlideMenu(在GitHub上提供)。
2)确保BaseActivity没有任何布局。
3)通过ArrayAdapter为ListView项充气。
希望对你有帮助。

关于android - 抽屉导航多个容器和最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29888795/

相关文章:

java - 从数据库中删除数据后如何刷新 ListView ?

android - 当我改变手机的方向或在选项卡之间导航时,我丢失了所有数据

java - 在android中使用简单的 fragment

java - 更改已在堆栈中的 fragment 的动画

android - Flutter 应用程序无法以 Debug模式启动

android - 如何让 RecyclerView 对齐到中心并能够滚动到所有项目,而中心是 "selected"?

Android - 旋转菜单的一部分超出屏幕

java - Android 中的膨胀布局

android - 线性布局中线条的宽度百分比

java - 如何在涉及 Fragment 的 Android 代码中找到空指针错误