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

时间:2018-02-12 10:14:33

标签: java android

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

Sample image of what is supposed to be done

5 个答案:

答案 0 :(得分:2)

创建活动,例如MainActivity.java

创建五个片段: 例如:FragmentPageOne.javaFragmentPageTwo.javaFragmentPageThree.javaFragmentPageFour.javaFragmentPagefive.java

在您的activity_main.xml中: 在一个父LinearLayouts内创建两个LinearLayout,并包含一个线性布局,其中五个buttons和一个FrameLayout将成为MainActivity.java上的容器。

在您的MainActivity.xml中 在每个onClickListner上设置buttons,当您在第一个按钮上显示时,它会在FrameLayout容器上显示您的第一个片段,就像按钮上的那个标签一样,它会在您的右侧显示您的片段布局线性布局。

另请参阅此

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();

        }

    }

答案 1 :(得分:0)

是的,你可以这样做。点击button使用即可使用fragments。对于每个按钮调用fragments并使用添加和替换处理fragments

答案 2 :(得分:0)

为每个页面定义fragments。在您要显示页面的位置进行虚拟布局。点击button点击相应的页面fragment

答案 3 :(得分:0)

您可以使用fragment代替布局page1,然后在点击fragment或2时替换布局button1,... 指南链接: https://developer.android.com/guide/components/fragments.html

答案 4 :(得分:0)

就像导航抽屉一样。您可以使用片段,然后根据按钮单击,更改片段! 让我知道它是否有效! :)