java - 如何使按钮在同一布局上动态打开页面?

标签 java android

我是 Android 开发新手。我一直在尝试将按钮链接到页面,当单击按钮时,它会在同一布局的右侧打开一个页面,对于布局上的不同按钮也是如此。下面附有插图,其中当单击按钮 1 时,它会打开第 1 页,我希望它在单击按钮 2 时打开第 2 页,替换第 1 页,对于按钮 3、4 和 5 也是如此。任何人都可以准确地告诉我我需要什么吗?做什么或包括?谢谢。

Sample image of what is supposed to be done

最佳答案

创建一个 Activity,例如 MainActivity.java

创建五个 fragment : 例如:FragmentPageOne.javaFragmentPageTwo.javaFragmentPageThree.javaFragmentPageFour.javaFragmentPage Five .java

在您的activity_main.xml中: 在一个父 LinearLayout 内创建两个 LinearLayouts,并包含一个带有五个 按钮 的线性布局和一个作为容器的 FrameLayoutMainActivity.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/

相关文章:

Android:如何发出 HTTP HEAD 请求?

android - 分发到 Android 中的特定屏幕?

java - split() 无法正常工作

java - java中虚拟键盘代码中表达式错误的非法开始

Java将字符串拆分成段落

android - 无法使用新的 Drive API 检索 Google Drive 文件和文件夹

android - 将文件保存在移动用户无法访问的android位置

java - 在避免实现继承和保持内部化的同时最大化代码重用的最佳方法

java - 将 Http Servlet 请求转换为 json 到我定义的对象

android - 如何在 videoview 中流式传输视频时删除空白区域?