BottomBar
介绍:
一个帮助你快速实现底部导航的自定义控件。
运行效果:
使用说明:
依赖
gradle
compile 'com.roughike:bottom-bar:1.0.0'
Maven
<dependency>
<groupId>com.roughike</groupId>
<artifactId>bottom-bar</artifactId>
<version>1.0.0</version>
<type>pom</type>
</dependency>
你可以通过指定一个item的数组或者是用xml menu资源来添加item。
用menu资源来添加item
res/menu/bottombar_menu.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/bottomBarItemOne"
android:icon="@drawable/ic_recents"
android:title="Recents" />
...
</menu>
MainActivity.java
public class MainActivity extends AppCompatActivity {
private BottomBar mBottomBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mBottomBar = BottomBar.attach(this, savedInstanceState);
mBottomBar.setItemsFromMenu(R.menu.bottombar_menu, new OnMenuTabSelectedListener() {
@Override
public void onMenuItemSelected(int resId) {
if (resId == R.id.bottomBarItemOne) {
// the user selected item number one
}
}
});
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// Necessary to restore the BottomBar's state, otherwise we would
// lose the current tab on orientation change.
mBottomBar.onSaveInstanceState(outState);
}
}
你要做的就是把bar设置到内容区域的view上。比如,如果你的fragments在一个id为fragmentContainer的ViewGroup里面,你应该这样做:
mBottomBar.attach(findViewById(R.id.fragmentContainer), savedInstanceState);
它可以在tab切换的时候自动切换Fragment吗?
可以的,但是这时你要调用的是 setFragmentItems()而不是setItemsFromMenu():
mBottomBar.setFragmentItems(getSupportFragmentManager(), R.id.fragmentContainer,
new BottomBarFragment(SampleFragment.newInstance("Content for recents."), R.drawable.ic_recents, "Recents"),
new BottomBarFragment(SampleFragment.newInstance("Content for favorites."), R.drawable.ic_favorites, "Favorites"),
new BottomBarFragment(SampleFragment.newInstance("Content for nearby stuff."), R.drawable.ic_nearby, "Nearby")
);
为每个单独的Fragment设置BottomBar
重写Fragment的 onCreateView() ,如下:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.my_fragment_layout, container, false);
// initialize your views here
BottomBar bottomBar = BottomBar.attach(view, savedInstanceState);
bottomBar.setItems(
new BottomBarTab(R.drawable.ic_recents, "Recents"),
new BottomBarTab(R.drawable.ic_favorites, "Favorites"),
new BottomBarTab(R.drawable.ic_nearby, "Nearby")
);
// Important! Don't return the view here. Instead, return the bottomBar, as it already contains your view.
return bottomBar;
}
我不喜欢Fragment,想所有东西自己实现!
这也是可以的
mBottomBar.setItems(
new BottomBarTab(R.drawable.ic_recents, "Recents"),
new BottomBarTab(R.drawable.ic_favorites, "Favorites"),
new BottomBarTab(R.drawable.ic_nearby, "Nearby")
);
// Listen for tab changes
mBottomBar.setOnItemSelectedListener(new OnTabSelectedListener() {
@Override
public void onItemSelected(int position) {
// user selected a different tab
}
});
ps:话说,这个不是最开始的那个setItemsFromMenu的代码版本吗。。
已下载
0