问题描述
我正在向我正在开发的这个应用程序添加一个导航抽屉,并且我已经搜索了互联网;论坛、stackoverflow、android 开发人员文档,但仍然没有找到一个很好的答案.
I'm adding a Navigation Drawer to this app that I am developing and I have scoured the internet; forums, stackoverflow, android developer documentation, and still have not found a great answer for this.
我知道不使用其中任何一个都可以做到这一点.我想知道的是如何.NsMenuAdapter模型用了一个title,然后就有这些功能
I know that it is possible to do this without using either of these things. What I am wondering is how. The NsMenuAdapter model uses a title, and then there are these functions
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
显然是在寻找操作栏.我尝试了几个不起作用的模型,我刚刚尝试完成的大模型位于此处 如何在Android Navigation Drawer的标题旁边添加图标(这与我下面的链接有关,该项目来自gitHub here https://github.com/gabrielemariotti/androiddev/tree/master/NavigationDrawer).现在关键是,我正在使用自定义布局(即与线性布局混合的相对布局),我真的不知道下一步应该做什么才能让它工作.
Which are clearly looking for an action bar. I tried a couple of models that didn't work, the big one I just got done trying is located here How to Add icons adjacent to titles for Android Navigation Drawer (which is related to the link I have below, the project is from gitHub here https://github.com/gabrielemariotti/androiddev/tree/master/NavigationDrawer). Now the key thing is, I am using a custom layout (i.e. Relative Layouts mixed in with Linear Layouts) and I'm really lost on what my next step should be in order to get this to work.
旁注:当我的 main_activity.xml(Navigation Drawer 的实现)中只有 ListView 时,它会像预期的那样正确滑出.但我终其一生都无法弄清楚如何用数据填充它.我基本上需要 3 个标题,其中包含可点击的导航元素,元素旁边有图标.
Sidenote: When I only have the ListView in my main_activity.xml (the implementation for the Navigation Drawer) it does properly slide out like it is suppose to. But I cannot for the life of me figure out how to populate it with data. I basically need 3 headers with that will have clickable navigation elements in them, with icons next to the elements.
我转向这个模型来了解如何通过相对布局实现这一点http://gmariotti.blogspot.com/2013/05/creating-navigation-drawer.html 但是他们使用动作/标题栏,这真的让我陷入了循环.
I turned to this model for most of my insight on how to do this via Relative Layouts http://gmariotti.blogspot.com/2013/05/creating-navigation-drawer.html But they use action/title bars which is what is really throwing me for a loop.
推荐答案
其实很简单.比使用 ActionBar 更容易.我正在用几乎最简单的布局来写答案
It's quite simple actually. Easier than with ActionBar. I'm writing the answer with almost simplest of layouts
让你的 xml 变成这样:
make your xml something like this:
<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" >
<!-- This is how your main page will look, just 2 buttons -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="100dp" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:onClick="onLeft"
android:text="left" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:onClick="onRight"
android:text="right" />
</RelativeLayout>
<!-- Left Drawer -->
<RelativeLayout
android:id="@+id/whatYouWantInLeftDrawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start" >
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/background_dark" />
<!-- you can have many more widgets here like buttons or labels -->
</RelativeLayout>
<!-- Right Drawer -->
<RelativeLayout
android:id="@+id/whatYouWantInRightDrawer"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_gravity="right" >
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/holo_green_light" />
<!-- you can have many more widgets here like buttons or labels -->
</RelativeLayout>
</android.support.v4.widget.DrawerLayout>
然后让你的活动变成这样:
Then make your activity something like this:
public class MainActivity extends Activity {
RelativeLayout leftRL;
RelativeLayout rightRL;
DrawerLayout drawerLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// I'm removing the ActionBar.
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
leftRL = (RelativeLayout)findViewById(R.id.whatYouWantInLeftDrawer);
rightRL = (RelativeLayout)findViewById(R.id.whatYouWantInRightDrawer);
drawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);
}
public void onLeft(View view) {
drawerLayout.openDrawer(leftRL);
}
public void onRight(View view) {
drawerLayout.openDrawer(rightRL);
}
}
就是这样.希望对您有所帮助.
That's it. Hope it helps.
这篇关于使用没有 TitleBar 或 ActionBar 的 Navigation Drawer的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!