-------------------------------------------------------------------------------------
NavigationView
要导入一个包。 F4,选中dependency 选择+ 选中 design()
修改Main_activity 里面的LinearLayout 为 <android.support.design.widget.NavigationView
<android.support.design.widget.NavigationView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="left|start"
android:id="@+id/menu"
>
</android.support.design.widget.NavigationView>
添加自定义属性:
添加这行xmlns:app="http://schemas.android.com/apk/res-auto"
然后 Close Project,再打开。
新建一个menu 的目录
新建一个menu的文件。navigation_menu
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="第一项" android:id="@+id/item_1"/>
<item android:title="第二项" android:id="@+id/item_2"/>
<item android:title="第三项" android:id="@+id/item_3"/>
<item android:title="第四项" android:id="@+id/item_4"/>
</menu>
添加 app:menu="@menu/navigation" 到下面
<android.support.design.widget.NavigationView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="left|start"
android:id="@+id/menu"
app:menu="@menu/navigation"
>
</android.support.design.widget.NavigationView>
修改:MainAcitivty:
package com.kodulf.cehua;
import android.support.design.widget.NavigationView;
import android.support.v4.app.ActivityCompat;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.MenuItem;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnClickListener, NavigationView.OnNavigationItemSelectedListener {
private DrawerLayout drawer;
private NavigationView menu;
private ActionBarDrawerToggle toggle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
drawer = (DrawerLayout) findViewById(R.id.drawer);
menu = (NavigationView) findViewById(R.id.main_menu);
// menu = (LinearLayout) findViewById(R.id.menu);
// menu.setOnClickListener(this);
// 显示Home
toggle = new ActionBarDrawerToggle(this, drawer, 0, 0);
//三条横线的Menu
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
toggle.syncState();
drawer.setDrawerListener(toggle);//让DrawerLayout的动作影响上面的按钮
menu.setNavigationItemSelectedListener(this);
}
/**
* menu点击后DrawerLayout 变化
* @param item
* @return
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(toggle.onOptionsItemSelected(item)){
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onClick(View v) {
}
@Override
public boolean onNavigationItemSelected(MenuItem item) {
//return false;
switch (item.getItemId()){
case R.id.item_1:
Toast.makeText(this,"first",Toast.LENGTH_LONG).show();
break;
case R.id.item_4:
ActivityCompat.finishAffinity(this);
break;
}
drawer.closeDrawer(GravityCompat.START);
return true;
}
//
// @Override
// public void onClick(View v) {
// //drawer.closeDrawer(menu);
// //drawer.closeDrawer(Gravity.START);//4.0一下是不能使用START的
// drawer.closeDrawer(GravityCompat.START);//这样就可以了
// }
}
把上面四项作为单选项:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item android:title="第一项" android:id="@+id/item_1"/>
<item android:title="第二项" android:id="@+id/item_2"/>
<item android:title="第三项" android:id="@+id/item_3"/>
<item android:title="第四项" android:id="@+id/item_4"/>
</group>
</menu>
默认选中
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item android:title="第一项" android:id="@+id/item_1" android:checked="true"/>
<item android:title="第二项" android:id="@+id/item_2"/>
<item android:title="第三项" android:id="@+id/item_3"/>
<item android:title="第四项" android:id="@+id/item_4"/>
</group>
</menu>
添加图片
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item android:title="第一项" android:id="@+id/item_1" android:icon="@mipmap/ic_launcher" android:checked="true" />
<item android:title="第二项" android:id="@+id/item_2" android:icon="@mipmap/ic_launcher"/>
<item android:title="第三项" android:id="@+id/item_3" android:icon="@mipmap/ic_launcher"/>
<item android:title="第四项" android:id="@+id/item_4" android:icon="@mipmap/ic_launcher"/>
</group>
</menu>
添加小分组:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item android:title="第一项" android:id="@+id/item_1" android:icon="@mipmap/ic_launcher" android:checked="true" />
<item android:title="第二项" android:id="@+id/item_2" android:icon="@mipmap/ic_launcher"/>
<item android:title="第三项" android:id="@+id/item_3" android:icon="@mipmap/ic_launcher"/>
<item android:title="第四项" android:id="@+id/item_4" android:icon="@mipmap/ic_launcher"/>
</group>
<item android:title="小分组">
<menu>
<item android:id="@+id/group_1" android:title="设置"></item>
<item android:id="@+id/group_2" android:title="我的"></item>
<item android:id="@+id/group_3" android:title="退出"></item>
</menu>
</item>
</menu>
将字体设置大一些:app:itemTextAppearance="?android:textAppearanceLarge"
<android.support.design.widget.NavigationView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="left|start"
android:id="@+id/main_menu"
app:menu="@menu/navigation"
app:itemTextAppearance="?android:textAppearanceLarge"
>
---------------------------------------------------------
新建一个layout menu_header
高度设置一个定值:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="200dp"
android:gravity="center"
android:background="#600F">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户名"
/>
</LinearLayout>
然后添加app:headerLayout="@layout/menu_header"
<android.support.design.widget.NavigationView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="left|start"
android:id="@+id/main_menu"
app:headerLayout="@layout/menu_header"
app:menu="@menu/navigation"
app:itemTextAppearance="?android:textAppearanceLarge"
>
+++++++++++++++++++++++++++++++++++++++++++++
ViewPager
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:id="@+id/drawer"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<!--FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F00"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="hello"
/>
</FrameLayout-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F00"
android:orientation="vertical"
>
<android.support.v4.view.ViewPager
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/pager"
/>
</LinearLayout>
<android.support.design.widget.NavigationView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="left|start"
android:id="@+id/main_menu"
app:headerLayout="@layout/menu_header"
app:menu="@menu/navigation"
app:itemTextAppearance="?android:textAppearanceLarge"
>
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
----------------------------------------------------------------