[英]Navigation drawer - Header View with ListView
I'm currently creating and defining a navigation drawer. 我目前正在创建和定义导航抽屉。 I want now a header view, like their on the google apps, above the item rows.
我现在想要一个标题视图,就像他们在Google应用上的项目行一样。 I only found examples with RecyclerViews, and i dont want to use it.
我只找到了RecyclerViews的例子,我不想使用它。 I have all finished with a ListView and all other stuff.
我已经完成了ListView和所有其他的东西。 Maybe someone can help me :) Thanks in advance
也许有人可以帮助我:)提前谢谢
You can create NavigationView
using android design support library without having pain to create listview or RecyclerView, its all created by android. 您可以使用Android设计支持库创建
NavigationView
而无需创建listview或RecyclerView,它全部由android创建。
To add it to your project you need to add the android design support library to your project, add below line in build.gradle 要将它添加到项目中,您需要将android设计支持库添加到项目中,在build.gradle中添加以下行
compile 'com.android.support:design:22.2.0
Check out android design support features here 在这里查看android设计支持功能
First create a header(header.xml) 首先创建一个头文件(header.xml)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="190dp"
android:background="@drawable/background_material"
android:orientation="vertical"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="nyname"
</RelativeLayout>
Next create a menu resource file, the items in the menu will be the items displayed in the drawer(drawer.xml) 接下来创建一个菜单资源文件,菜单中的项目将是抽屉中显示的项目(drawer.xml)
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/first1"
android:checked="false"
android:icon="@drawable/icon1"
android:title="@string/string1" />
<item
android:id="@+id/second2"
android:checked="false"
android:icon="@drawable/icon2"
android:title="@string/string2" />
</menu>
Next create a DrawerLayout
file, within the drawerlayout you can see I have included a Toolbar
and a 'FrameLayout`. 接下来创建一个
DrawerLayout
文件,在drawerlayout中你可以看到我已经包含了一个Toolbar
和一个'FrameLayout`。 When the item in the drawerlayout is clicked you can replace fragment. 单击drawerlayout中的项目时,您可以替换片段。
Also within it is the NavigationView with these parameters: 其中还包含具有以下参数的NavigationView:
app:headerLayout="@layout/header"
app:menu="@menu/drawer"
android:layout_gravity="start"
app:headerLayout
is the header.xml that we created in step 1. app:menu
is the menu resource item ie drawer.xml app:headerLayout
的是,我们在步骤1中创建的header.xml app:menu
是菜单资源项即drawer.xml
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".MainActivity">
<LinearLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical"
>
<include
android:id="@+id/toolbar"
layout="@layout/tool_bar"
/>
<FrameLayout
android:id="@+id/frame"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
</LinearLayout>
<android.support.design.widget.NavigationView
android:id="@+id/navigation_view"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:layout_gravity="start"
app:headerLayout="@layout/header"
app:menu="@menu/drawer"
/>
</android.support.v4.widget.DrawerLayout>
Next in your MainActivity extend AppcompatActivity, MainActivity中的下一步扩展了AppcompatActivity,
public class MainActivity extends AppCompatActivity {
............................................
Intialise NavigationView and call setNavigationItemSelectedListener to get click events, Intialise NavigationView并调用setNavigationItemSelectedListener来获取点击事件,
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initializing Toolbar and setting it as the actionbar
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//Initializing NavigationView
navigationView = (NavigationView) findViewById(R.id.navigation_view);
//Setting Navigation View Item Selected Listener to handle the item click of the navigation menu
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
// This method will trigger on item Click of navigation menu
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
//Checking if the item is in checked state or not, if not make it in checked state
if(menuItem.isChecked()) menuItem.setChecked(false);
else menuItem.setChecked(true);
//Closing drawer on item click
drawerLayout.closeDrawers();
//Check to see which item was being clicked and perform appropriate action
switch (menuItem.getItemId()){
//Replacing the main content with ContentFragment
case R.id.first1:
SomeFragment fragment = new SomeFragment();
android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frame,fragment);
fragmentTransaction.commit();
return true;
...................
Step by step procedure to create navigationview go here 创建导航视图的一步一步程序转到此处
How it would look: 看起来如何:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.