BottomNavigationView没有显示在我的活动中

时间:2016-10-20 12:02:50

标签: android material-design bottom-type

我正在使用此link实现BottomNavigationView 我一步一步地实现了所有内容,但我的导航视图没有显示在屏幕底部。

这就是我所做的。

public class MainActivity extends AppCompatActivity implements ActivityCompat.OnRequestPermissionsResultCallback {

    Intent intent = null;
    BottomNavigationView navigationView;

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

        navigationView = (BottomNavigationView) findViewById(R.id.navigation); 

        navigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {

                int id = item.getItemId();
                if(id == R.id.program){
                    intent = new Intent(MainActivity.this, MainActivity.class);
                    startActivity(intent);
                    finish();
                }
                if(id == R.id.access){
                    try {
                        manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
                        if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
                            Intent myIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                            startActivity(myIntent);
                            overridePendingTransition(R.anim.push_up_in,
                                    R.anim.push_up_out);
                        } else {
                            intent = new Intent(MainActivity.this, Access.class);
                            startActivity(intent);
                            finish();
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    return true;
                }
                if(id == R.id.informations){
                    intent = new Intent(MainActivity.this, Information.class);
                    startActivity(intent);
                    finish();
                    return true;
                }
                if(id == R.id.contact){
                    intent = new Intent(MainActivity.this, Contact.class);
                    startActivity(intent);
                    finish();
                    return true;
                }
                return false;
            }
        });
     }
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        menu = navigationView.getMenu(); <---- // -->
        getMenuInflater().inflate(R.menu.menu_main, menu);

        return true;
    }
}

和我的activity.xml

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorWhite">

    <android.support.design.widget.BottomNavigationView
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:design="http://schema.android.com/apk/res/android.support.design"
        android:id="@+id/navigation"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:layout_gravity="bottom"
        design:menu="@menu/menu_main" />
</android.support.design.widget.CoordinatorLayout>

我还将gradle版本更新为25,否则无效。

compileSdkVersion 25
buildToolsVersion "24.0.3"
targetSdkVersion 25

compile 'com.android.support:appcompat-v7:25.0.0'
compile 'com.android.support:design:25.0.0'

3 个答案:

答案 0 :(得分:11)

它不起作用的原因是因为menu位于错误的命名空间(design)。请改用app命名空间。

<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorWhite">

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/navigation"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:layout_gravity="bottom"
        app:menu="@menu/menu_main" />
</android.support.design.widget.CoordinatorLayout>

答案 1 :(得分:1)

尝试以下xml。不要忘记添加app:layout_anchorapp:layout_anchorGravity="bottom"。这里BottomNavigationView以FrameLayout为基础锚定到bottom

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
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/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".MainActivity">

<FrameLayout
    android:id="@+id/rv"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <!-- Contents -->
</FrameLayout>

<android.support.design.widget.BottomNavigationView
    android:id="@+id/nm_bottom"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorPrimaryDark"
    android:foregroundTint="@color/colorAccent"
    app:itemIconTint="@android:color/white"
    app:itemTextColor="@android:color/white"
    app:layout_anchor="@+id/rv"
    app:layout_anchorGravity="bottom"
    app:menu="@menu/nav_menu" />

</android.support.design.widget.CoordinatorLayout>

答案 2 :(得分:0)

我遇到了这个问题,因为我的BottomNavigationView没有显示在android studio的设计中。但是,当我运行代码时,它就会出现在手机上。

因此,如果您没有尝试运行它。运行它并在搜索答案之前进行检查,也许这是您的问题