今天主要要设计ButtomNavigationView(底部的按钮)来切换不同的fragment,而另一个,NavigationView的按钮是加在侧边的按钮(不要搞混了,但用法差不多),那麽首先先new->Fragment
->Fragment(Blank)。
接着就会看到以下的画面。
主要就是设定名字,他会帮你把Fragment的class跟他的布局都建起来并绑定好view,那麽我们就建三个Fragment用来後面做切换(UI画面可依照自己的喜好设计),接着加入依赖至gradle(app)/dependcies中。
implementation 'com.google.android.material:material:1.0.0-alpha10'
加入完之後一样点选Sync Now。
首先先将内部的TextView(Hello World!)删除後,加入ButtonNavigationView元件(按钮)在底部,以及加入FragmentContainerView(显示fragment的画面)在布局中。
而FragmentContainerView可以先设第一个Activity(BlankFragment),那麽完成设定了以後,就先来设计ButtnNavigationView的按钮。
首先先new->Android Resource Directory。
将Resource type改为menu後点选ok。
接着就会在res的资料夹中发现menu这个资料夹,就在menu的资料夹上面右键,new一个Menu Resource File。
file name的话我就取叫button好了,按ok以後就进入menu/button.xml中。
接着拉入三个menu至布局中,并给予每个item id及更改title,大约是这样:
<!--加入item id主要是切换时透过id去切换对应的fragment-->
<item android:title="ItemA"
android:id="@+id/itema"/>
<item android:title="ItemB"
android:id="@+id/itemb"/>
<item android:title="ItemC"
android:id="@+id/itemc"/>
接着在ButtonNavigationView中加入刚刚设定的menu、以及设定id。
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/navigation"
android:layout_width="match_parent"
android:layout_height="60dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:menu="@menu/button"/>
这样就会显示对应的item了,接着就要讲到class的设计。
public class MainActivity extends AppCompatActivity {
BottomNavigationView bnView;
private BlankFragment blankFragment;
private BlankFragment2 blankFragment2;
private BlankFragment3 blankFragment3;
FragmentManager fragmentManager;
FragmentTransaction fragmentTransaction;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//绑定ButtomNavigationView元件的id
bnView=findViewById(R.id.navigation);
/*********fragment*******/
fragmentManager = getSupportFragmentManager();//抽象类,负责一系列对fragment的操作,getChildFragmentManager()可获得子级fragment的引用,parent则是getParentFragmentManager()。
bnView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {//Navigation Button listener,需实现的方法为onNavigationItemSelected,可取按下的项目id(item.getItemId())
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();//取得按钮id
fragmentTransaction=fragmentManager.beginTransaction();
switch (id){
case R.id.itema:
blankFragment = new BlankFragment();
//fragment覆盖(replace),使用blankFragment的class
fragmentTransaction.replace(R.id.fragmentContainerView, blankFragment);
fragmentTransaction.commit();
return true;
case R.id.itemb:
blankFragment2 = new BlankFragment2();
//fragment覆盖(replace),使用blankFragment2的class
fragmentTransaction.replace(R.id.fragmentContainerView, blankFragment2);
fragmentTransaction.commit();
return true;
case R.id.itemc:
blankFragment3 = new BlankFragment3();
//fragment覆盖(replace),使用blankFragment3的class
fragmentTransaction.replace(R.id.fragmentContainerView, blankFragment3);
fragmentTransaction.commit();
return true;
}
return false;
}
});
}
}
<<: Spring Framework X Kotlin Day 26 Test Driven Development
>>: Re-architect - Domain Layer (一)
本篇重点 Scanners介绍 当日成交金额排行 当日成交量排行 当日涨(跌)金额排行 最高/最低价...
今日目标:了解C# script (脚本) unity主要利用C#控制游戏,学好C#的物件导向写法就...
Not Defined VS undefined undefined: 在创造阶段只有变数在记忆体里...
图片 网页上一定会有多许多图片元素我们在开发网站时需多了解图片的特性及格式,在开发的过程会更加顺利。...
前言 这篇文章觉得很适合给要当mentor的人,在你当之前应该要先听过这篇演讲,然後反思一下你想对...