导包
要想使用android6.0必须先导入包
navigationView
<android.support.design.widget.NavigationView
android:id="@+id/nv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="left"
//声明头部内容
app:headerLayout="@layout/header"
//声明内容部分
app:menu="@menu/menu">
</android.support.design.widget.NavigationView>
在内容部分的布局如下:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single" >
<item
android:id="@+id/shouye"
android:icon="@mipmap/ic_dashboard"
android:title="首页"
android:checked="true"/>
<item
android:id="@+id/guowai"
android:icon="@mipmap/ic_forum"
android:title="国外" />
<item
android:id="@+id/zonghe"
android:icon="@mipmap/ic_headset"
android:title="综合" />
<item
android:id="@+id/guonei"
android:icon="@mipmap/ic_event"
android:title="国内" />
</group>
<item android:title="Item" >
<menu>
<item
android:id="@+id/sub1"
android:title="sub item1" />
<item
android:id="@+id/sub2"
android:title="sub item2" />
</menu>
</item>
</menu>
在代码中的逻辑是:
dw = (DrawerLayout) findViewById(R.id.drawer);
nv = (NavigationView) findViewById(R.id.nv);
nv.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
//如果此处返回true,则进行状态改变
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
dw.closeDrawers();
return true;
}
});
navigationView和toolbar的使用
首先,要去掉toolbar,通过设置主题来完成;
<!-- Base application theme. --> //主要是 noactionBar
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
其次,在主界面声明toolbar
<android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/toolbar"
android:background="#3047ba">
</android.support.v7.widget.Toolbar>
最后在代码中,将DawerLayout 和Toolbar进行关联
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
//添加ActionBarDrawerToggle
ActionBarDawerToggle toggle = new ActionBarDrawerToggle(this,drawerLayout,toolbar,R.string.openText,R.String.closeText);
//更新toggle的状态
toggle.syncState();
//将Toggle和DrawerLayout进行关联
drawerLayout.addDrawerListener(toggle);
tabLayout
经常和ViewPager进行使用,ViewPager又经常和Fragment连用.
TabLayout + ViewPager + Fragment + FragmentPageAdaper
首先,布局如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.javahe.tablayout_design_demo.MainActivity">
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tab"
>
</android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager>
</LinearLayout>
代码的实现:
public class MainActivity extends AppCompatActivity {
private TabLayout tab;
private ViewPager vp;
private List<Fragment> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 1.获取VIew
tab = (TabLayout) findViewById(R.id.tab);
vp = (ViewPager) findViewById(R.id.vp);
//2.准备数据
list = new ArrayList<>();
list.add(setTitle(new Tab1Fragment(),"tab1"));
list.add(setTitle(new Tab2Fragment(),"tab2"));
list.add(setTitle(new Tab3Fragment(),"tab3"));
//3.创建Adapter并进行关联
MyAdapter myAdapter = new MyAdapter(getSupportFragmentManager());
vp.setAdapter(myAdapter);
//4.关联tab
tab.setupWithViewPager(vp);
}
public Fragment setTitle(Fragment fragment, String title) {
Bundle args = new Bundle();
args.putString("title", title);
fragment.setArguments(args);
return fragment;
}
public class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return list.get(position);
}
@Override
public int getCount() {
return list.size();
}
@Override
public CharSequence getPageTitle(int position) {
return (CharSequence) list.get(position).getArguments().get("title");
}
}
}
tabLayout的一些必要参数的使用
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tab"
app:tabBackground="@color/colorAccent" //总体背景色
app:tabSelectedTextColor="#a228c7" //选中标题文本的颜色
app:tabTextColor="#fff" //默认标题文本的颜色
app:tabIndicatorColor="#45dd17" //指示标签的颜色
app:tabIndicatorHeight="3dp" //指示标签的高度
>