RadioGroup实现底部导航栏效果,如图::
实现可最基本的导航栏功能,不能左右滑动,只能点击
1.内嵌的fragment的布局:
2.fragment的activity代码:
public class FrHome extends Fragment {
@Nullable@Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {View view = LayoutInflater.from(getContext()).inflate(R.layout.fragment_home, container, false);return view;}
}以此为例根据需要编写不同的fragment布局等等。
3.装载fragment的界面布局如下(其中使用了selector进行实现点击改变图标和文字颜色):
点击改变文字颜色:
点击改变图标:
界面布局:
4.装载fragment的界面的activity代码(加入双击返回键则退出应用):public class ActHome extends FragmentActivity implements RadioGroup.OnCheckedChangeListener {
@BindView(R.id.frame_layout) FrameLayout frameLayout;@BindView(R.id.tab_home) RadioButton tabHome;@BindView(R.id.tab_health) RadioButton tabHealth;@BindView(R.id.tab_personal) RadioButton tabPersonal;@BindView(R.id.tab_bar) RadioGroup tabBar;
public final static String ACTION_EXIT_SYSTEM = "sys_exit";
private FragmentManager manager;private FragmentTransaction transaction;private FrHome frHome;private FrHealth frHealth;private FrPersonal frPersonal;private long mExitTime;
@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_home);ButterKnife.bind(this);RadioButton tabHome = (RadioButton) tabBar.getChildAt(0);tabHome.setChecked(true);tabBar.setOnCheckedChangeListener(this);initFragment();}
private void initFragment() {manager = getSupportFragmentManager();transaction = manager.beginTransaction();frHome = new FrHome();transaction.add(R.id.frame_layout,frHome);transaction.commit();}
@Override public void onCheckedChanged(RadioGroup radioGroup, @IdRes int checkedId) {switch (checkedId) {case R.id.tab_home:FragmentTransaction ft1 = manager.beginTransaction();hideAll(ft1);if (frHome!=null){ft1.show(frHome);}else {frHome=new FrHome();ft1.add(R.id.frame_layout,frHome);}ft1.commit();break;case R.id.tab_health:FragmentTransaction ft2 = manager.beginTransaction();hideAll(ft2);if (frHealth!=null){ft2.show(frHealth);}else {frHealth = new FrHealth();ft2.add(R.id.frame_layout,frHealth);}ft2.commit();break;case R.id.tab_personal:FragmentTransaction ft5 = manager.beginTransaction();hideAll(ft5);if (frPersonal!=null){ft5.show(frPersonal);}else {frPersonal = new FrPersonal();ft5.add(R.id.frame_layout, frPersonal);}ft5.commit();break;}}
private void hideAll(FragmentTransaction ft){if (ft==null){return;}if (frHome!=null){ft.hide(frHome);}if (frHealth!=null){ft.hide(frHealth);}if (frPersonal!=null){ft.hide(frPersonal);}}
@Override public void onBackPressed() {if ((System.currentTimeMillis() - mExitTime) > 2000) {Toast.makeText(ActHome.this,"再按一次退出程序",Toast.LENGTH_SHORT).show();mExitTime = System.currentTimeMillis();} else {new Handler().postDelayed(new Runnable() {@Override public void run() {onExit(ActHome.this);}}, 500);}}
public static void onExit(final Context context) {try {Intent intent = new Intent();intent.setAction(context.getApplicationContext().getPackageName() + ACTION_EXIT_SYSTEM);context.sendBroadcast(intent);// MobclickAgent.onKillProcess(context);new Handler().postDelayed(new Runnable() {@Override public void run() {System.exit(0);}}, 200);} catch (Exception e) {e.printStackTrace();}}}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:Android 弹出Dialog时隐藏状态栏和底部导航栏的方法解决android 显示内容被底部导航栏遮挡的问题android 全屏去掉底部虚拟导航栏的方法超简单的几行代码搞定Android底部导航栏功能Android用Scroller实现一个可向上滑动的底部导航栏Android程序开发之Fragment实现底部导航栏实例代码Android 中使用RadioGroup和Fragment实现底部导航栏的功能
