如何在底部导航栏始终保留在屏幕上时启动不同的活动。例如,如果我单击底部导航栏中的选项卡,它会启动谷歌地图视图,我如何制作它,以便仍然可以看到底部导航栏。非常像youtube应用程序,底部导航栏始终存在。如果我可以指向正确的方向,我会自己做研究
答案 0 :(得分:1)
Fragment
是一个Activity的模块化部分,它有自己的生命周期,有自己的布局,视图..,(一种“子活动”)
使用片段的另一个明显优势,跨不同屏幕的UI优化,它允许您在一个活动中管理多个页面。
现在请按照以下步骤操作:
让您的主要Acitivy扩展FragmentActivity
:
public class MainActivity extends FragmentActivity {
...
}
将主要活动布局更改为以下内容:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.yourComp.appName.MainActivity">
<android.support.v4.view.ViewPager
android:id="@+id/body"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_above="@id/footer" />
<LinearLayout
android:id="@+id/footer"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_alignParentBottom="true"
android:orientation="horizontal" />
</RelativeLayout>
如下所示创建一个新的 FragmentPagerAdapter ,我定义了3个页面,但您可能想要更改此页面,请记住您必须创建一个片段而不是您需要的每个活动:
public class FragmentAdapter extends FragmentPagerAdapter {
static final int NUMBER_OF_PAGES = 3;
Context context;
public FragmentAdapter(android.support.v4.app.FragmentManager fm, Context context) {
super(fm);
this.context = context;
}
@Override
public int getCount() {
return NUMBER_OF_PAGES;
}
@Override
public android.support.v4.app.Fragment getItem(int position) {
switch (position) {
case 0:
return new Fragment1();
case 1:
return new Fragment2();
case 2:
return new Fragment3();
default:
return null;
}
}
}
现在转到Android Studio,点击文件&gt;新&gt;片段&gt;片段(空白),然后创建FragmentAdapter
中列出的片段。 fragments 可以代替您的活动。
最后将这些行添加到您的主Activity,OnCreate方法中,目的是将主要活动布局上的 viewPager 之前声明的片段绑定在一起:
ragmentAdapter = new FragmentAdapter(((FragmentActivity) this).getSupportFragmentManager(), this);
ViewPager pager = (ViewPager) findViewById(R.id.body);
viewPager.setAdapter(fragmentAdapter);
现在设计您自己的自定义页脚视图或使用 BottomNavigationView 。用户可以在片段之间滑动,也可以使用此方法以编程方式更改页面:
viewPager.setCurrentItem(n); // n is fragment number that decleared in adapter 0,1,2
此外,您可能需要禁用用户手动扫描,如描述here。
答案 1 :(得分:-1)
如果你想使用相同的底部导航视图,那么你必须使用片段。有了活动,你无法做到。这是最好的做法。
是的,您也可以使用底部导航和活动,但您必须创建导航视图所有其他活动并设置监听器。恩。比如youtube,让我们说,第一个活动就是带导航视图的家。然后点击“趋势”,打开趋势活动。在趋势活动中,您再次必须创建导航视图。