2016-10-20 1 views
3

Я реализую BottomNavigationView, используя это 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' 

ответ

8

Причина это не работает, потому что 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> 
+0

спасибо человека .. его работы сейчас, .. –

+0

своей работой для меня спасибо – Adil

1

Попробуйте ниже xml. Не забудьте добавить app:layout_anchor и app: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> 
+1

до сих пор не появляется –

 Смежные вопросы

  • Нет связанных вопросов^_^