Soy un principiante en Android, hoy he creado una actividad BottomNavigationView, quiero mostrar 3 pestañas diferentes con botones de navegación, así que creé 3 fragmentos, el problema es después de agregar los fragmentos, BottomNavigationView se muestra en la parte superior like this, ¿qué debo hacer si quiero BottomNavigationView en la parte inferior como estaba antes de agregar los fragmentos? aquí está mi código de actividad principal

package com.hackerinside.jaisonjoseph.polysocial;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.design.widget.TabLayout;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

private TextView mTextMessage;

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

    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()) {
            case R.id.navigation_home:

                tab1 radio = new tab1();
                android.support.v4.app.FragmentManager manager = getSupportFragmentManager();
                manager.beginTransaction().replace(R.id.container, radio, radio.getTag()).commit();


            case R.id.navigation_dashboard:


                tab2 radio1 = new tab2();
                android.support.v4.app.FragmentManager manager1 = getSupportFragmentManager();
                manager1.beginTransaction().replace(R.id.container, radio1, radio1.getTag()).commit();

            case R.id.navigation_notifications:

                tab3 radio2 = new tab3();
                android.support.v4.app.FragmentManager manager2 = getSupportFragmentManager();
                manager2.beginTransaction().replace(R.id.container, radio2, radio2.getTag()).commit();



        }
        return false;
    }

};

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






    tab1 radio = new tab1();
    android.support.v4.app.FragmentManager manager = getSupportFragmentManager();
    manager.beginTransaction().replace(R.id.container, radio, radio.getTag()).commit();

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

 }

Esto es activity_main.xml

<?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"
tools:context="com.hackerinside.jaisonjoseph.polysocial.MainActivity">

<FrameLayout
    android:id="@+id/content"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    android:background="@android:color/holo_blue_dark">

    <TextView
        android:id="@+id/message"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/activity_vertical_margin"
        android:layout_marginLeft="@dimen/activity_horizontal_margin"
        android:layout_marginRight="@dimen/activity_horizontal_margin"
        android:layout_marginTop="@dimen/activity_vertical_margin"
        android:text="@string/title_home" />

</FrameLayout>

<android.support.design.widget.BottomNavigationView
    android:id="@+id/navigation"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:background="?android:attr/windowBackground"
    app:menu="@menu/navigation" />

Este es mi primer fragmento tab1

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context="com.hackerinside.jaisonjoseph.polysocial.tab1">

<!-- TODO: Update blank fragment layout -->
<TextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="@string/hello_blank_fragment" />

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button" />
3
Jaison_Joseph 6 abr. 2017 a las 17:31

2 respuestas

La mejor respuesta

BottomNavigationView no aparece automáticamente en la parte inferior de la vista. Tienes que colocarlos manualmente. Puede usar un RelativeLayout para eso.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
  tools:context="com.hackerinside.jaisonjoseph.polysocial.MainActivity">

  <FrameLayout
      android:id="@+id/content"
      android:layout_width="match_parent"
      android:layout_height="0dp"
      android:layout_weight="1"
      android:background="@android:color/holo_blue_dark">

      <TextView
          android:id="@+id/message"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_marginBottom="@dimen/activity_vertical_margin"
          android:layout_marginLeft="@dimen/activity_horizontal_margin"
          android:layout_marginRight="@dimen/activity_horizontal_margin"
          android:layout_marginTop="@dimen/activity_vertical_margin"
          android:text="@string/title_home" />

  </FrameLayout>

  <android.support.design.widget.BottomNavigationView
      android:id="@+id/navigation"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_gravity="bottom"
      android:background="?android:attr/windowBackground"
      android:layout_alignParentBottom="true"
      app:menu="@menu/navigation" />
</RelativeLayout>

Si cambió su raíz LinearLayout a RelativeLayout y agregó el parámetro android:layout_alignParentBottom="true" a su BottomNavigationView. Espero que eso ayude.

Si necesita más ayuda, probablemente este enlace pueda ayudarlo: https://medium.com/@hitherejoe/exploring-the-android-design-support-library-bottom-navigation-drawer-548de699e8e0

4
Neoklosch 6 abr. 2017 a las 14:44

Por cierto, también puedes mirar https://github.com/roughike/BottomBar Es una vista personalizada como el nuevo patrón de navegación inferior del diseño de materiales (https: //material.io/guidelines/components/bottom-navigation.html#bottom-navigation-behavior).

0
Kirill Vashilo 27 abr. 2017 a las 18:33