Android底部导航栏
发布时间
阅读量:
阅读量
使用Android Studio制作像微信一样的底部导航栏
第一:显示效果及源码下载地址

下图就是自主制作的底部导航栏:

实现上述效果的源代码下载地址:github.com
第二:简单讲述一下操作流程
a、新建一个项目
此时只有一个MainActivity和activity_main.xml文件,这时最好新建两个包activity和tab包,这样的好处是条理清晰。

b、把下载源码安装此路劲打开:app\src\main\java\com\application\tab
把tab文件夹拷贝到你新建的项目下:
完成上述步骤后,执行下面操作:把源码目录app\src\main\res\layout下的fragment1.xml、fragment2.xml、fragment3.xml拷贝到你项目的layout文件夹下或自己新建这样的xml文件。

第三:配置activity_main.xml文件,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activity.MainActivity">
<FrameLayout
android:id="@+id/fl_container"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
</FrameLayout>
<com.example.bottombar.BottomBar
android:id="@+id/bottom_bar"
android:layout_width="match_parent"
android:layout_height="46dp"
android:layout_gravity="bottom"
android:background="#FFFFFF"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</android.support.constraint.ConstraintLayout>

第四:配置MainActivity类
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BottomBar bottomBar = findViewById(R.id.bottom_bar);
bottomBar.setContainer(R.id.fl_container)
.setTitleBeforeAndAfterColor("#999999", "#ff5d5e")
.addItem(com.example.bottombar.fragment.Fragment1.class,
"首页",
R.mipmap.ic_launcher,
R.mipmap.ic_launcher)
.addItem(com.example.bottombar.fragment.Fragment2.class,
"订单",
R.mipmap.ic_launcher,
R.mipmap.ic_launcher)
.addItem(Fragment3.class,
"我的",
R.mipmap.ic_launcher,
R.mipmap.ic_launcher)
.build();
}

完成上述步骤后,下载apk到手机后,效果如下图:

第五:继承Fragment类与继承AppCompatActivity对控件的关联等一些操作有所不同
比如说:我在首页这里点击一个按钮跳转到另一个activity,此时底部导航栏应该时没有了;也就是说我要在fragment1.xml文件布局设置一个Button并设置监听事件。
1、fragment1.xml文件布局设置一个Button
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="188dp"
android:layout_marginTop="216dp"
android:text="1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="144dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:text="Button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</android.support.constraint.ConstraintLayout>

2、在Fragment1类里面设置监听
@Override
public void onActivityCreated(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
Button button = (Button) getActivity().findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(), "Clicked", Toast.LENGTH_LONG).show();
Intent intent=new Intent(getActivity(), Main2Activity.class);
startActivity(intent);
}
});
}

仔细看一下,这里与继承AppCompatActivity的控件关联有所不同:
Button button = (Button) getActivity().findViewById(R.id.button);
跳转到另一个activity也有所不同:
Intent intent=new Intent(getActivity(), Main2Activity.class);
到此底部导航栏设置完毕,详细底部导航栏依赖BottomBar.java类实现就不详细说了。

全部评论 (0)
还没有任何评论哟~
