当前位置:   article > 正文

如何用android studio实现底部导航,AndroidStudio制作底部导航栏以及用Fragment实现切换功能..._android studio底部导航栏怎么做

android studio底部导航栏怎么做

前言

大家好,我是 波士顿木木,今天给大家带来AndroidStudio制作底部导航栏以及用Fragment实现切换功能的概述,希望你们喜欢

学习目标

AndroidStudio制作底部导航栏以及用Fragment实现切换功能,用户点击底部导航栏可以实现三个模块的跳转。

拿QQ界面举例,我们不难发现,点击下面状态栏,除当前界面下的状态栏以外的上面部分界面会跳转到相应的另一个页面。我们今天就来实现这种效果。

一、前期准备

  • 创建一个新的模块,将其命名为fragment:
  • 再创建三个后面要实现相互切换的fragment:
  • 创建好后的项目结构如下:

二、编写activity_main.xml

  • 在页面底部添加三个约束布局做点击事件,再在上方添加一个id为layout的约束布局。代码如下:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. tools:context=".MainActivity">
  8. <androidx.constraintlayout.widget.ConstraintLayout
  9. android:layout_width="match_parent"
  10. android:layout_height="70dp"
  11. app:layout_constraintBottom_toBottomOf="parent"
  12. app:layout_constraintEnd_toEndOf="parent"
  13. app:layout_constraintStart_toStartOf="parent">
  14. <androidx.constraintlayout.widget.ConstraintLayout
  15. android:id="@+id/constraintLayout2"
  16. android:layout_width="0dp"
  17. android:layout_height="match_parent"
  18. android:background="#69F0AE"
  19. app:layout_constraintEnd_toStartOf="@+id/constraintLayout"
  20. app:layout_constraintHorizontal_bias="0.5"
  21. app:layout_constraintStart_toStartOf="parent"
  22. app:layout_constraintTop_toTopOf="parent">
  23. </androidx.constraintlayout.widget.ConstraintLayout>
  24. <androidx.constraintlayout.widget.ConstraintLayout
  25. android:id="@+id/constraintLayout"
  26. android:layout_width="0dp"
  27. android:layout_height="match_parent"
  28. android:background="#448AFF"
  29. app:layout_constraintEnd_toStartOf="@+id/constraintLayout3"
  30. app:layout_constraintHorizontal_bias="0.5"
  31. app:layout_constraintStart_toEndOf="@+id/constraintLayout2"
  32. app:layout_constraintTop_toTopOf="parent">
  33. </androidx.constraintlayout.widget.ConstraintLayout>
  34. <androidx.constraintlayout.widget.ConstraintLayout
  35. android:id="@+id/constraintLayout3"
  36. android:layout_width="0dp"
  37. android:layout_height="match_parent"
  38. android:background="#FA9F9F"
  39. app:layout_constraintEnd_toEndOf="parent"
  40. app:layout_constraintHorizontal_bias="0.5"
  41. app:layout_constraintStart_toEndOf="@+id/constraintLayout"
  42. app:layout_constraintTop_toTopOf="parent">
  43. </androidx.constraintlayout.widget.ConstraintLayout>
  44. </androidx.constraintlayout.widget.ConstraintLayout>
  45. <androidx.constraintlayout.widget.ConstraintLayout
  46. android:id="@+id/layout"
  47. android:layout_width="match_parent"
  48. android:layout_height="659dp"
  49. app:layout_constraintEnd_toEndOf="parent"
  50. app:layout_constraintStart_toStartOf="parent"
  51. app:layout_constraintTop_toTopOf="parent">
  52. </androidx.constraintlayout.widget.ConstraintLayout>
  53. </androidx.constraintlayout.widget.ConstraintLayout>

三、在MainActivity.java中添加逻辑代码

  • 初始化三个fragment页面:
  1. MessageFragment messageFragment = new MessageFragment();
  2. ContactFragment contactFragment = new ContactFragment();
  3. DynamicFragment dynamicFragment = new DynamicFragment();
  •  在onCreat方法中将layout替换成fragment:
  1. getSupportFragmentManager().beginTransaction().add(R.id.layout,messageFragment).commit();
  2. getSupportFragmentManager().beginTransaction().add(R.id.layout,contactFragment).commit();
  3. getSupportFragmentManager().beginTransaction().add(R.id.layout,dynamicFragment).commit();
  • 给底部的三个约束布局添加点击事件:
  1. findViewById(R.id.constraintLayout2).setOnClickListener(new View.OnClickListener() {
  2. @Override
  3. public void onClick(View v) {
  4. }
  5. });
  6. findViewById(R.id.constraintLayout).setOnClickListener(new View.OnClickListener() {
  7. @Override
  8. public void onClick(View v) {
  9. }
  10. });
  11. findViewById(R.id.constraintLayout3).setOnClickListener(new View.OnClickListener() {
  12. @Override
  13. public void onClick(View v) {
  14. }
  15. });

 要实现显示其中一个fragment的同时,隐藏另外两个fragment,添加以下代码:

getSupportFragmentManager().beginTransaction().hide(contactFragment).hide(dynamicFragment).show(messageFragment).commit();
  • 那么,点击事件里面就有东西可放了: 
  1. findViewById(R.id.constraintLayout2).setOnClickListener(new View.OnClickListener() {
  2. @Override
  3. public void onClick(View v) {
  4. getSupportFragmentManager().beginTransaction().hide(contactFragment).hide(dynamicFragment).show(messageFragment).commit();
  5. }
  6. });
  7. findViewById(R.id.constraintLayout).setOnClickListener(new View.OnClickListener() {
  8. @Override
  9. public void onClick(View v) {
  10. getSupportFragmentManager().beginTransaction().hide(messageFragment).hide(dynamicFragment).show(contactFragment).commit();
  11. }
  12. });
  13. findViewById(R.id.constraintLayout3).setOnClickListener(new View.OnClickListener() {
  14. @Override
  15. public void onClick(View v) {
  16. getSupportFragmentManager().beginTransaction().hide(contactFragment).hide(messageFragment).show(dynamicFragment).commit();
  17. }
  18. });

 运行效果:

        

完整MainActivity.java代码:

  1. package com.hnucm.fragment3;
  2. import androidx.appcompat.app.AppCompatActivity;
  3. import android.os.Bundle;
  4. import android.view.View;
  5. public class MainActivity extends AppCompatActivity {
  6. MessageFragment messageFragment = new MessageFragment();
  7. ContactFragment contactFragment = new ContactFragment();
  8. DynamicFragment dynamicFragment = new DynamicFragment();
  9. @Override
  10. protected void onCreate(Bundle savedInstanceState) {
  11. super.onCreate(savedInstanceState);
  12. setContentView(R.layout.activity_main);
  13. getSupportFragmentManager().beginTransaction().add(R.id.layout,messageFragment).commit();
  14. getSupportFragmentManager().beginTransaction().add(R.id.layout,contactFragment).commit();
  15. getSupportFragmentManager().beginTransaction().add(R.id.layout,dynamicFragment).commit();
  16. getSupportFragmentManager().beginTransaction().hide(contactFragment).hide(dynamicFragment).show(messageFragment).commit();
  17. findViewById(R.id.constraintLayout2).setOnClickListener(new View.OnClickListener() {
  18. @Override
  19. public void onClick(View v) {
  20. getSupportFragmentManager().beginTransaction().hide(contactFragment).hide(dynamicFragment).show(messageFragment).commit();
  21. }
  22. });
  23. findViewById(R.id.constraintLayout).setOnClickListener(new View.OnClickListener() {
  24. @Override
  25. public void onClick(View v) {
  26. getSupportFragmentManager().beginTransaction().hide(messageFragment).hide(dynamicFragment).show(contactFragment).commit();
  27. }
  28. });
  29. findViewById(R.id.constraintLayout3).setOnClickListener(new View.OnClickListener() {
  30. @Override
  31. public void onClick(View v) {
  32. getSupportFragmentManager().beginTransaction().hide(contactFragment).hide(messageFragment).show(dynamicFragment).commit();
  33. }
  34. });
  35. }
  36. }

下一期:使用NestedScrollView实现页面可上下滚(滑)动

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/823509
推荐阅读
相关标签
  

闽ICP备14008679号