簡體   English   中英

如何使用BottomNavigationView在兩個應用程序屏幕之間切換

[英]How to use BottomNavigationView to switch between two app screens

問題是:我創建了一個具有一個屏幕的應用程序,該屏幕包含ViewPager(包含卡片)和BottomNavigationView。 但是現在我需要添加功能以切換到“關於”屏幕。

問題:如何切換到“關於”布局並返回最佳方式? “關於”只是具有幾個textViews的簡單布局(無需在屏幕之間傳輸數據)

我試圖重寫我的類並創建頂級層次的Main類,該類將容納另一個ViewPager,該ViewPager將容納片段(帶有卡片和“ about”布局的Viewpager)並在它們之間進行切換,但目前還沒有真正起作用,也許有一種更簡單的方法可以在“首頁”頂部顯示“關於”,然后再顯示?

應用外觀

我的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 ...

    }

代替ViewPager使用FrameLayout 然后創建兩個片段。 一個帶有ViewPager的片段,另一個帶有About視圖的片段。 BottomNavigationView單擊只需替換適當的片段。

希望能幫助到你。 :)

找到了一種可能的方法:

在main_layout中,我創建了constraintLayout:

<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;
    }

看起來像:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM