【问题标题】:How to use BottomNavigationView to switch between two app screens如何使用 BottomNavigationView 在两个应用屏幕之间切换
【发布时间】:2017-11-11 20:39:30
【问题描述】:

问题是: 我创建了一个带有一个屏幕的应用程序,其中包含 ViewPager(持有卡片)和 BottomNavigationView。但现在我需要添加功能以切换到“关于”屏幕。

问题: 如何切换到“关于”布局并返回最佳方式? “about”只是简单的布局,只有很少的 textViews(不需要屏幕之间的数据传输)

我尝试重写我的类并创建顶层主类,该类将包含另一个 ViewPager,该 ViewPager 将包含 Fragments(带有卡片的 Viewpager 和“关于”布局)并在它们之间切换,但目前它没有t真的有效,也许有一种更简单的方法可以在“home”顶部显示“about”,然后返回?

我的 NavigationItemSelectedListener 在 MainActivity:

    private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
            = new BottomNavigationView.OnNavigationItemSelectedListener() {

        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()) {
                case R.id.navigation_home:
                    // change screen
                    return true;
                case R.id.navigation_about:
                    // change screen
                    return true;
            }
            return false;
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // other code here ...

        BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
        navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);

        ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);

        // other code here ...

    }

【问题讨论】:

    标签: java android bottomnavigationview


    【解决方案1】:

    使用FrameLayout 代替ViewPager。然后创建两个片段。一个带有ViewPager 的片段,另一个片段用于“关于”视图。在BottomNavigationView 上单击只需替换合适的片段。

    希望对您有所帮助。 :)

    【讨论】:

      【解决方案2】:

      找到了一种可能的方法:

      在 main_layout 我创建了约束布局:

      <android.support.constraint.ConstraintLayout
          android:id="@+id/aboutLayer"
          android:layout_width="0dp"
          android:layout_height="0dp"
          android:background="@android:color/holo_purple" <--- BACKGROUND NOT TRANSPARENT
          android:visibility="invisible" <--- INVISIBLE
          app:layout_constraintBottom_toTopOf="@+id/navigation"
          app:layout_constraintEnd_toEndOf="parent"
          app:layout_constraintStart_toStartOf="parent"
          app:layout_constraintTop_toTopOf="parent">
      
      </android.support.constraint.ConstraintLayout>
      

      在监听器中只改变图层的可见性

          @Override
          public boolean onNavigationItemSelected(@NonNull MenuItem item) {
              switch (item.getItemId()) {
                  case R.id.navigation_home:
                      // hide about
                      aboutInfo.setVisibility(View.INVISIBLE);
                      return true;
                  case R.id.navigation_about:
                      // show about
                      aboutInfo.setVisibility(View.VISIBLE);
                      return true;
              }
              return false;
          }
      

      看起来像:

      【讨论】:

        猜你喜欢
        • 2018-07-19
        • 2015-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-30
        • 2020-11-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多