【问题标题】:Bottom Navigation View not visible in the default fragment Android Studio底部导航视图在默认片段 Android Studio 中不可见
【发布时间】:2017-08-13 14:47:03
【问题描述】:

我的底部导航栏在我的默认起始片段 SearchFragment 中不可见。如果我将起始片段更改为另一个,例如MoreFragment,除了 SearchFragment 之外,它出现在上面以及所有其他部分,它是我理想的起始片段。

这是我的代码:

Main.java

import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.view.MenuItem;



public class Main extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    if (savedInstanceState == null) {
           getSupportFragmentManager().beginTransaction().replace(R.id.activity_main, new SearchFragment()).commit();
    }

    BottomNavigationView bottomNavigation = (BottomNavigationView) findViewById(R.id.bottom_navigation);

    bottomNavigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {

        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch(item.getItemId()){
                case R.id.seach_tab:
                   SearchFragment sf=new SearchFragment();
                    FragmentManager fragmentmanager1=getSupportFragmentManager();
                    fragmentmanager1.beginTransaction()
                            .replace(R.id.activity_main, sf)
                            .commit();
                    break;


                case R.id.bookings_tab:
                    BookingsFragment bf=new BookingsFragment();
                    FragmentManager fragmentmanager2=getSupportFragmentManager();
                    fragmentmanager2.beginTransaction()
                            .replace(R.id.activity_main, bf)
                            .commit();
                    break;

                case R.id.account_tab:
                    ProfileFragment pf=new ProfileFragment();
                    FragmentManager fragmentmanager3=getSupportFragmentManager();
                    fragmentmanager3.beginTransaction()
                            .replace(R.id.activity_main, pf)
                            .commit();
                    break;

                case R.id.more_tab:
                   MoreFragment mf=new MoreFragment();
                    FragmentManager fragmentmanager4=getSupportFragmentManager();
                    fragmentmanager4.beginTransaction()
                            .replace(R.id.activity_main, mf)
                            .commit();
                    break;

            }
return false;
        }


    });
}
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:id="@+id/activity_main"
android:layout_height="match_parent"
android:background="@color/white">

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/bottom_navigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        app:itemBackground="@color/white"
        android:layout_gravity="bottom"
        app:itemIconTint="@drawable/tab_bar"
        app:itemTextColor="@drawable/tab_bar"
        app:menu="@menu/bottombarmenu" />

</FrameLayout>

bottombarmenu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
    android:title="Search"
    android:enabled="true"
    android:id="@+id/seach_tab"
    android:icon="@drawable/icon_search"
    app:showAsAction="ifRoom|withText"
    >

</item>

<item
    android:id="@+id/bookings_tab"
    android:enabled="false"
    android:icon="@drawable/icon_bookings"
    android:title="My bookings"></item>

<item
    android:title="Profile"
    android:enabled="false"
    android:id="@+id/account_tab"
    android:icon="@drawable/icon_account"
    app:showAsAction="ifRoom|withText">
</item>

<item
    android:id="@+id/more_tab"
    android:enabled="false"
    android:icon="@drawable/icon_more"
    android:title="More"
    app:showAsAction="ifRoom|withText"></item>

</menu>

【问题讨论】:

    标签: android bottomnavigationview


    【解决方案1】:

    您正在替换完整的视图,因此您可以尝试这样的布局,

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <FrameLayout
            android:id="@+id/activity_main"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">
    
    
    
        </FrameLayout>
    
        <android.support.design.widget.BottomNavigationView
            android:id="@+id/bottom_navigation"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:itemBackground="@color/white"
            android:layout_gravity="bottom"
            app:itemIconTint="@drawable/tab_bar"
            app:itemTextColor="@drawable/tab_bar"
            app:menu="@menu/bottombarmenu"/>
    
    </LinearLayout>
    

    【讨论】:

    • @FionaMuthoni 如果 Muthukrishnan 提供的解决方案解决了您的问题,请表示感谢并将解决方案标记为已解决!
    • 布局重量是我的问题的解决方案。谢谢你
    【解决方案2】:

    public class Main extends FragmentActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
               getSupportFragmentManager().beginTransaction().replace(R.id.activity_main, new SearchFragment()).commit();
    
        BottomNavigationView bottomNavigation = (BottomNavigationView) findViewById(R.id.bottom_navigation);
    
        bottomNavigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
    
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                switch(item.getItemId()){
                    case R.id.seach_tab:
                       SearchFragment sf=new SearchFragment();
                        FragmentManager fragmentmanager1=getSupportFragmentManager();
                        fragmentmanager1.beginTransaction()
                                .replace(R.id.activity_main, sf)
                                .commit();
                        break;
    
    
                    case R.id.bookings_tab:
                        BookingsFragment bf=new BookingsFragment();
                        FragmentManager fragmentmanager2=getSupportFragmentManager();
                        fragmentmanager2.beginTransaction()
                                .replace(R.id.activity_main, bf)
                                .commit();
                        break;
    
                    case R.id.account_tab:
                        ProfileFragment pf=new ProfileFragment();
                        FragmentManager fragmentmanager3=getSupportFragmentManager();
                        fragmentmanager3.beginTransaction()
                                .replace(R.id.activity_main, pf)
                                .commit();
                        break;
    
                    case R.id.more_tab:
                       MoreFragment mf=new MoreFragment();
                        FragmentManager fragmentmanager4=getSupportFragmentManager();
                        fragmentmanager4.beginTransaction()
                                .replace(R.id.activity_main, mf)
                                .commit();
                        break;
    
                }
    return false;
            }
    
    
        });
    }
    }

    注意:如果状态为 null,则保存的实例将加载,但在您的情况下,它不为 null,因此不会加载...但是如果您希望将其作为默认值,则排除该 if 语句

    【讨论】:

    • 嗨 Sai,我已经运行了代码,但底部导航栏仍然不可见。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    • 2021-08-18
    • 2019-01-28
    • 2017-03-20
    相关资源
    最近更新 更多