使用RadioGroup实现底部导航栏
来源:互联网 发布:ubuntu 设置用户目录 编辑:程序博客网 时间:2024/06/04 18:34
效果如图:
实现可最基本的导航栏功能,不能左右滑动,只能点击
1.内嵌的fragment的布局:
<?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="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:textSize="50sp" android:textColor="@color/colorPrimary" android:text="home"/></LinearLayout>
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进行实现点击改变图标和文字颜色):
点击改变文字颜色:
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:color="#3F51B5"/> <item android:state_checked="false" android:color="#8f8f8f"/></selector>
点击改变图标:
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:drawable="@mipmap/ic_history_checked"/> <item android:state_checked="false" android:drawable="@mipmap/ic_history_unchecked"/></selector>
界面布局:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" tools:context="com.lotus.chartspagedemo.ActHome"> <FrameLayout android:id="@+id/frame_layout" android:layout_width="match_parent" android:layout_above="@+id/card_view" android:layout_height="match_parent"/> <android.support.v7.widget.CardView android:id="@+id/card_view" app:cardElevation="25dp" android:layout_alignParentBottom="true" android:layout_width="match_parent" android:layout_height="wrap_content"> <RadioGroup android:paddingTop="5dp" android:id="@+id/tab_bar" android:background="@color/app_white" android:layout_width="match_parent" android:layout_height="60dp" android:gravity="center" android:orientation="horizontal"> <RadioButton android:id="@+id/tab_home" android:gravity="center" android:button="@null" android:drawableTop="@drawable/selector_tab_home" android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:textColor="@drawable/selector_tab_color" android:text="首页"/> <RadioButton android:id="@+id/tab_health" android:gravity="center" android:button="@null" android:drawableTop="@drawable/selector_tab_health" android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:textColor="@drawable/selector_tab_color" android:text="体检测评" /> <RadioButton android:id="@+id/tab_personal" android:gravity="center" android:button="@null" android:drawableTop="@drawable/selector_tab_personal" android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:textColor="@drawable/selector_tab_color" android:text="个人中心" /> </RadioGroup> </android.support.v7.widget.CardView></RelativeLayout>
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(); } }}
阅读全文
0 0
- 使用RadioGroup实现底部导航栏
- RadioGroup实现底部导航
- 使用RadioGroup实现底部导航栏效果,不需要java代码。
- TabHost+RadioGroup实现底部导航栏
- RadioGroup+Fragment实现底部导航栏
- Fragment + RadioGroup实现底部导航
- 仿RadioGroup实现底部导航
- Android底部导航栏实现(二)之RadioGroup
- TabHost、RadioGroup实现底部菜单导航
- RadioGroup+FrameLayout实现底部导航页面
- RadioGroup+TabHost组合实现底部导航
- TabHost、RadioGroup、ToolBar实现底部菜单导航
- RadioGroup+ViewPager制作的底部导航栏
- android 创建底部导航栏 (radiogroup+fragment)
- android 底部导航栏 ViewPager+RadioGroup+Fragment
- 底部导航之RadioGroup
- 使用ViewPager+RadioGroup+Fragment实现类似微信的底部导航
- 使用radiogroup和viewpage实现底部导航出现的按钮选中界面没有改变的问题
- 视频(1)--->编解码基础知识
- HDU-1029-Ignatius and the Princess IV
- 《Nginx高性能Web服务器详解》阅读笔记1
- laravel自带SMTP邮件发送配置修改
- PHP Ajax 跨域问题最佳解决方案
- 使用RadioGroup实现底部导航栏
- 【Python2.7 学习笔记】函数(二)
- poj2184
- disruptor(一)
- CSS3中的各类选择器
- Oracle 用户的管理
- Java8 学习心得
- php和mysql连接
- LeetCode 68 Text Justification