1
实例图
侧滑图
首先定义布局
在写这个Demo的时候,是为了复习下Fragment的基础用法。不过就单纯地写Fragment又好像有点单一,于是我就想通过Fragment+RadioButton实现一个简单的底部导航栏。因为这样的布局在很多项目中都已经常用的。而且平时自己在学习其他技术点的时候,敲代码写Demo,也是用这样的基础布局来练习
//抽屉布局
<android.support.v4.widget.DrawerLayout 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:id="@+id/drawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.damin.homethried.MainActivity"
tools:openDrawer="left">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
//Tooolbar
<android.support.v7.widget.Toolbar
android:id="@+id/tool"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@color/colorPrimary">
//Toolbar标题居中
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="首页"
android:textColor="@android:color/white"
android:textSize="20sp" />
</android.support.v7.widget.Toolbar>
//viewpage滑动布局
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="8" />
//底部Radiogroup布局
<RadioGroup
android:id="@+id/rg"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="center_vertical"
android:orientation="horizontal">
<RadioButton
android:id="@+id/one"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:checked="true"
android:drawableTop="@drawable/one"
android:gravity="center"
android:padding="6dp"
android:text="首页"
android:textColor="@drawable/radiotext" />
<RadioButton
android:id="@+id/two"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/two"
android:gravity="center"
android:text="知识体系"
android:textColor="@drawable/radiotext" />
<RadioButton
android:id="@+id/three"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/three"
android:gravity="center"
android:text="项目"
android:textColor="@drawable/radiotext" />
<RadioButton
android:id="@+id/four"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/four"
android:gravity="center"
android:text="公众号"
android:textColor="@drawable/radiotext" />
<RadioButton
android:id="@+id/five"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:button="@null"
android:drawableTop="@drawable/five"
android:gravity="center"
android:text="导航"
android:textColor="@drawable/radiotext" />
</RadioGroup>
</LinearLayout>
//侧滑布局
<android.support.design.widget.NavigationView
android:id="@+id/cehua"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="left"
app:headerLayout="@layout/item_head"
app:menu="@menu/cehua">
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
```//
## 2然后上代码,特别简单
package com.example.damin.homethried;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.NavigationView;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
private Toolbar mTool;
private ViewPager mVp;
private RadioGroup mRg;
/**
* 首页
*/
private TextView mTitle;
/**
* 首页
*/
private RadioButton mOne;
/**
* 知识体系
*/
private RadioButton mTwo;
/**
* 项目
*/
private RadioButton mThree;
/**
* 公众号
*/
private RadioButton mFour;
/**
* 导航
*/
private RadioButton mFive;
private DrawerLayout mDrawer;
private ArrayList<String> arr;
private NavigationView mCehua;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
mTool = (Toolbar) findViewById(R.id.tool);
mVp = (ViewPager) findViewById(R.id.vp);
mRg = (RadioGroup) findViewById(R.id.rg);
mTitle = (TextView) findViewById(R.id.title);
mDrawer = (DrawerLayout) findViewById(R.id.drawer);
mCehua = findViewById(R.id.cehua);
mCehua.setItemIconTintList(null);
mTool.setTitle("");
mTitle.setText("首页");
setSupportActionBar(mTool);
ActionBarDrawerToggle action = new ActionBarDrawerToggle(MainActivity.this, mDrawer, mTool, R.string.app_name, R.string.app_name);
mDrawer.addDrawerListener(action);
action.syncState();
View headerView = mCehua.getHeaderView(0);
ImageView tu = headerView.findViewById(R.id.pictur);
tu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "==岳==", Toast.LENGTH_SHORT).show();
}
});
final ArrayList<Fragment> frag = new ArrayList<>();
frag.add(new AFragment());
frag.add(new BFragment());
frag.add(new CFragment());
frag.add(new DFragment());
frag.add(new EFragment());
arr = new ArrayList<>();
arr.add("首页");
arr.add("知识体系");
arr.add("公众号");
arr.add("导航");
arr.add("项目");
mCehua.setNavigationItemSelectedListener(this);
Apdater apdater = new Apdater(getSupportFragmentManager(), frag);
mVp.setAdapter(apdater);
mVp.setOffscreenPageLimit(5);
ActionBar actionbar = getSupportActionBar();
if (actionbar != null) {
actionbar.setDisplayHomeAsUpEnabled(true);
}
mVp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
RadioButton childAt = (RadioButton) mRg.getChildAt(position);
mTitle.setText(arr.get(position));
childAt.setChecked(true);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
mRg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.one:
mVp.setCurrentItem(0);
mTitle.setText(arr.get(0));
break;
case R.id.two:
mVp.setCurrentItem(1);
mTitle.setText(arr.get(1));
break;
case R.id.three:
mVp.setCurrentItem(2);
mTitle.setText(arr.get(2));
break;
case R.id.four:
mVp.setCurrentItem(3);
mTitle.setText(arr.get(3));
break;
case R.id.five:
mVp.setCurrentItem(4);
mTitle.setText(arr.get(4));
break;
}
}
});
mOne = (RadioButton) findViewById(R.id.one);
mTwo = (RadioButton) findViewById(R.id.two);
mThree = (RadioButton) findViewById(R.id.three);
mFour = (RadioButton) findViewById(R.id.four);
mFive = (RadioButton) findViewById(R.id.five);
mDrawer = (DrawerLayout) findViewById(R.id.drawer);
mCehua = (NavigationView) findViewById(R.id.cehua);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
item.setChecked(true);
int itemId = item.getItemId();
switch (itemId) {
case R.id.frist:
Toast.makeText(this, "1111", Toast.LENGTH_SHORT).show();
break;
case R.id.senced:
break;
case R.id.thired:
break;
case R.id.fouth:
break;
}
return false;
}
class Apdater extends FragmentStatePagerAdapter {
private List<Fragment> arr;
public Apdater(FragmentManager fm, List<Fragment> arr) {
super(fm);
this.arr = arr;
}
public Apdater(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return arr.get(position);
}
@Override
public int getCount() {
return arr.size();
}
}
}
//这就是一个简单的radiobutton的联动..
可以根据自己的能力去写更好的方法