虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > Android编程 > Android使用RadioGroup实现底部导航栏

Android使用RadioGroup实现底部导航栏
类别:Android编程   作者:码皇   来源:互联网   点击:

这篇文章主要为大家详细介绍了Android使用RadioGroup实现底部导航栏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

RadioGroup实现底部导航栏效果,如图::

 

实现可最基本的导航栏功能,不能左右滑动,只能点击

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();
    }
    }
    }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关热词搜索: RadioGroup底部导航栏 RadioGroup导航栏 a