我是 Android 开发新手。我一直在尝试将按钮链接到页面,当单击按钮时,它会在同一布局的右侧打开一个页面,对于布局上的不同按钮也是如此。下面附有插图,其中当单击按钮 1 时,它会打开第 1 页,我希望它在单击按钮 2 时打开第 2 页,替换第 1 页,对于按钮 3、4 和 5 也是如此。任何人都可以准确地告诉我我需要什么吗?做什么或包括?谢谢。
最佳答案
创建一个 Activity,例如 MainActivity.java
创建五个 fragment :
例如:FragmentPageOne.java
、FragmentPageTwo.java
、FragmentPageThree.java
、FragmentPageFour.java
、FragmentPage Five .java
在您的activity_main.xml中:
在一个父 LinearLayout
内创建两个 LinearLayouts
,并包含一个带有五个 按钮
的线性布局和一个作为容器的 FrameLayout
在 MainActivity.java
上。
在您的 MainActivity.xml 中:
在每个 buttons
上设置 onClickListner
,当您点击第一个按钮时,它将在 FrameLayout
容器上显示您的第一个 fragment ,就像按钮上的选项卡一样在线性布局的右侧显示 fragment 布局。
也看看这个
http://www.truiton.com/2017/01/android-bottom-navigation-bar-example/
https://www.androidhive.info/2017/12/android-working-with-bottom-navigation/
您的 Activity.xml 如下所示:
<LinearLayout
orientation = horizontal />
<LinearLayout>
//Five Buttons here
</LinearLayout>
<LinearLayout>
<FrameLayout
app:elevation="5dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/content_frame_home">
</FrameLayout>
</LinearLayout>
</LinearLayout>
下面的示例代码:
@Override
public void onClick(View v) {
if(v.getId()== R.id.home_ll){
homeImg.setImageResource(R.mipmap.ic_home_active);
searchImg.setImageResource(R.mipmap.ic_search);
HomeFragment homeFragment = new HomeFragment().newInstance();
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame_home, homeFragment)
.commit();
}
if(v.getId()== R.id.search_ll){
homeImg.setImageResource(R.mipmap.ic_home);
searchImg.setImageResource(R.mipmap.ic_search_active);
SearchFragment searchFragment = new SearchFragment().newInstance();
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame_home, searchFragment)
.commit();
}
if(v.getId()== R.id.categories_ll){
homeImg.setImageResource(R.mipmap.ic_home);
searchImg.setImageResource(R.mipmap.ic_search);
CategoriesFragment categoriesFragment = new CategoriesFragment().newInstance();
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame_home, categoriesFragment)
.commit();
}
if(v.getId()== R.id.cart_ll){
homeImg.setImageResource(R.mipmap.ic_home);
searchImg.setImageResource(R.mipmap.ic_search);
CartFragment cartFragment = new CartFragment().newInstance();
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame_home, cartFragment)
.commit();
}
if(v.getId()== R.id.account_ll){
homeImg.setImageResource(R.mipmap.ic_home);
searchImg.setImageResource(R.mipmap.ic_search);
AccountFragment accountFragment = new AccountFragment().newInstance();
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame_home, accountFragment)
.commit();
}
}
关于java - 如何使按钮在同一布局上动态打开页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48743972/