¿Cómo cambiar la actividad en el botón de navegación inferior?
Quiero utilizar la barra de navegación inferior en mi aplicación Android, pero el problema es que toda la pantalla es la actividad, es posible cargar la actividad sin ocultar la barra de navegación inferior.
Ejemplo: activity_main.xml
- Navegación Cajón de contenedores múltiples y mejores prácticas
- Menú contextual de un ListFragment
- Obtener id de recurso desde la vista que se infló
- Cómo hacer que el menú de opciones aparezca en la parte inferior de la pantalla de Android
- Traducir animación funciona perfectamente cuando se define con XML y sólo una vez perfectamente por código - Android
<?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" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.widget.NestedScrollView android:id="@+id/myScrollingContent" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- Your loooooong scrolling content here. --> </android.support.v4.widget.NestedScrollView> <com.roughike.bottombar.BottomBar android:id="@+id/bottomBar" android:layout_width="match_parent" android:layout_height="60dp" android:layout_gravity="bottom" app:bb_tabXmlResource="@xml/bottom_bar" app:bb_behavior="shy"/> </android.support.design.widget.CoordinatorLayout>
Esta es mi actividad base,
MainActivity.java
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); BottomBar bottomBar; bottomBar = (BottomBar) findViewById(R.id.bottomBar); bottomBar.setOnTabSelectListener(new OnTabSelectListener() { @Override public void onTabSelected(@IdRes int tabId) { if (tabId == R.id.matching) { Log.i("matching","matching inside "+tabId); Intent in=new Intent(getBaseContext(),Main2Activity.class); startActivity(in); }else if (tabId == R.id.watchlist) { Log.i("matching","watchlist inside "+tabId); Intent in=new Intent(getBaseContext(),Main3Activity.class); startActivity(in); } } }); } }
Main2Activity
public class Main2Activity extends MainActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main2); NestedScrollView dynamicContent = (NestedScrollView) findViewById(R.id.myScrollingContent); View wizard = getLayoutInflater().inflate(R.layout.activity_main2, null); dynamicContent.addView(wizard);
Main3Activity
public class Main3Activity extends MainActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main3); NestedScrollView dynamicContent = (NestedScrollView) findViewById(R.id.myScrollingContent); View wizard = getLayoutInflater().inflate(R.layout.activity_main3, null); dynamicContent.addView(wizard); } }
manifiesto
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.bottom.bottomnavigation"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".Main2Activity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MainActivity" /> <activity android:name=".Main3Activity"></activity> </application> </manifest>
- Editado
- ¿Cómo puedo hacer que mi Android SwipeableCardViews se parezca más a la aplicación de correo de IOS 7 (desliza para mostrar los botones)
- ¿Qué significa android: layout_weight?
- ExpandableListView / Drill-Down en el menú deslizante
- Utilizar la biblioteca DataBinding para establecer el recurso de color de fondo o null
- Icono de barra de acciones ocultado después de que SearchView se expande
- ConstraintLayout relación de aspecto
- Listview la misma altura que el contenido
He resuelto este problema de la siguiente manera:
1.Cree una BaseActivity con la barra de navegación inferior.
package com.example.apple.bottomnavbarwithactivity; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.widget.RadioButton; import android.widget.RadioGroup; public class BaseActivity extends AppCompatActivity { RadioGroup radioGroup1; RadioButton deals; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_base); radioGroup1=(RadioGroup)findViewById(R.id.radioGroup1); deals = (RadioButton)findViewById(R.id.deals); radioGroup1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { Intent in; Log.i("matching", "matching inside1 bro" + checkedId); switch (checkedId) { case R.id.matching: Log.i("matching", "matching inside1 matching" + checkedId); in=new Intent(getBaseContext(),MatchingActivity.class); startActivity(in); overridePendingTransition(0, 0); break; case R.id.watchList: Log.i("matching", "matching inside1 watchlistAdapter" + checkedId); in = new Intent(getBaseContext(), WatchlistActivity.class); startActivity(in); overridePendingTransition(0, 0); break; case R.id.rates: Log.i("matching", "matching inside1 rate" + checkedId); in = new Intent(getBaseContext(),RatesActivity.class); startActivity(in); overridePendingTransition(0, 0); break; case R.id.listing: Log.i("matching", "matching inside1 listing" + checkedId); in = new Intent(getBaseContext(), ListingActivity.class); startActivity(in); overridePendingTransition(0, 0); break; case R.id.deals: Log.i("matching", "matching inside1 deals" + checkedId); in = new Intent(getBaseContext(), DealsActivity.class); startActivity(in); overridePendingTransition(0, 0); break; default: break; } } }); } }
BaseActivity diseño denominado base_activity.xml
<LinearLayout android:layout_width="match_parent" android:layout_height="56dp" android:elevation="10dp" android:background="@color/white" android:id="@+id/bottonNavBar" android:paddingTop="5dp" android:orientation="horizontal" android:layout_alignParentBottom="true" android:foregroundGravity="bottom"> <RadioGroup android:id="@+id/radioGroup1" android:gravity="center" android:layout_height="match_parent" android:layout_width="match_parent" android:orientation="horizontal" android:baselineAligned="false"> <RadioButton android:layout_width="match_parent" android:gravity="center" android:layout_height="match_parent" android:text="Matching" android:layout_weight="1" android:button="@null" android:padding="2dp" android:checked="false" android:textSize="12sp" android:drawableTop="@drawable/selector_matching" android:textColor="@drawable/selector_nav_text" android:id="@+id/matching"/> <RadioButton android:layout_width="match_parent" android:gravity="center" android:layout_height="match_parent" android:button="@null" android:layout_weight="1" android:padding="2dp" android:checked="false" android:textSize="12sp" android:drawableTop="@drawable/selector_watchlist" android:textColor="@drawable/selector_nav_text" android:id="@+id/watchList" android:text="Watchlist"/> <RadioButton android:layout_width="match_parent" android:gravity="center" android:layout_height="match_parent" android:id="@+id/rates" android:button="@null" android:paddingTop="5dp" android:paddingBottom="2dp" android:paddingLeft="2dp" android:paddingRight="2dp" android:layout_weight="1" android:checked="false" android:textSize="12sp" android:drawableTop="@drawable/selector_rates" android:textColor="@drawable/selector_nav_text" android:text="Rates"/> <RadioButton android:layout_width="match_parent" android:gravity="center" android:layout_height="match_parent" android:button="@null" android:padding="2dp" android:checked="false" android:layout_weight="1" android:textSize="12sp" android:drawableTop="@drawable/selector_deals" android:textColor="@drawable/selector_nav_text" android:id="@+id/deals" android:text="Deals"/> <RadioButton android:layout_width="match_parent" android:gravity="center" android:layout_height="match_parent" android:button="@null" android:padding="2dp" android:checked="false" android:layout_weight="1" android:textSize="12sp" android:drawableTop="@drawable/selector_listing" android:textColor="@drawable/selector_nav_text" android:id="@+id/listing" android:text="Listing"/> </RadioGroup> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/dynamicContent" android:orientation="vertical" android:layout_marginBottom="56dp" android:background="@color/white" android:layout_gravity="bottom"> </LinearLayout>
2.extend BaseActivity en toda la actividad que desea abrir en el clic de navegación inferior y también es necesario inflar los diseños de la actividad Por ejemplo, he creado cinco ejemplos de actividad.
I] MatchingActivity.
package com.example.apple.bottomnavbarwithactivity; import android.graphics.Color; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.LinearLayout; import android.widget.RadioButton; import android.widget.RadioGroup; //extends our custom BaseActivity public class MatchingActivity extends BaseActivity { LinearLayout dynamicContent,bottonNavBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_matching); //dynamically include the current activity layout into baseActivity layout.now all the view of baseactivity is accessible in current activity. dynamicContent = (LinearLayout) findViewById(R.id.dynamicContent); bottonNavBar= (LinearLayout) findViewById(R.id.bottonNavBar); View wizard = getLayoutInflater().inflate(R.layout.activity_matching, null); dynamicContent.addView(wizard); //get the reference of RadioGroup. RadioGroup rg=(RadioGroup)findViewById(R.id.radioGroup1); RadioButton rb=(RadioButton)findViewById(R.id.matching); // Change the corresponding icon and text color on nav button click. rb.setCompoundDrawablesWithIntrinsicBounds( 0,R.drawable.ic_matching_clicked, 0,0); rb.setTextColor(Color.parseColor("#3F51B5")); } }
Ii] Lista de SeguimientoActividad
package com.example.apple.bottomnavbarwithactivity; import android.graphics.Color; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.LinearLayout; import android.widget.RadioButton; import android.widget.RadioGroup; public class WatchlistActivity extends AppCompatActivity { LinearLayout dynamicContent,bottonNavBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_watchlist1); dynamicContent = (LinearLayout) findViewById(R.id.dynamicContent); bottonNavBar= (LinearLayout) findViewById(R.id.bottonNavBar); View wizard = getLayoutInflater().inflate(R.layout.activity_watchlist1, null); dynamicContent.addView(wizard); RadioGroup rg=(RadioGroup)findViewById(R.id.radioGroup1); RadioButton rb=(RadioButton)findViewById(R.id.watchList); rb.setCompoundDrawablesWithIntrinsicBounds( 0,R.drawable.favourite_heart_selected, 0,0); rb.setTextColor(Color.parseColor("#3F51B5")); } }
Iii] TarifasActividad
package com.example.apple.bottomnavbarwithactivity; import android.graphics.Color; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.LinearLayout; import android.widget.RadioButton; import android.widget.RadioGroup; public class RatesActivity extends BaseActivity { LinearLayout dynamicContent,bottonNavBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R.layout.activity_rates); dynamicContent = (LinearLayout) findViewById(R.id.dynamicContent); bottonNavBar= (LinearLayout) findViewById(R.id.bottonNavBar); View wizard = getLayoutInflater().inflate(R.layout.activity_rates, null); dynamicContent.addView(wizard); RadioGroup rg=(RadioGroup)findViewById(R.id.radioGroup1); RadioButton rb=(RadioButton)findViewById(R.id.rates); rb.setCompoundDrawablesWithIntrinsicBounds( 0,R.drawable.ic_rate_clicked, 0,0); rb.setTextColor(Color.parseColor("#3F51B5")); } }
Iv] ListadoActividad
package com.example.apple.bottomnavbarwithactivity; import android.graphics.Color; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.LinearLayout; import android.widget.RadioButton; import android.widget.RadioGroup; public class ListingActivity extends BaseActivity { LinearLayout dynamicContent,bottonNavBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_listing); dynamicContent = (LinearLayout) findViewById(R.id.dynamicContent); bottonNavBar= (LinearLayout) findViewById(R.id.bottonNavBar); View wizard = getLayoutInflater().inflate(R.layout.activity_listing, null); dynamicContent.addView(wizard); RadioGroup rg=(RadioGroup)findViewById(R.id.radioGroup1); RadioButton rb=(RadioButton)findViewById(R.id.listing); rb.setCompoundDrawablesWithIntrinsicBounds( 0,R.drawable.ic_listing_clicked, 0,0); rb.setTextColor(Color.parseColor("#3F51B5")); } }
V] OfertasActividad
package com.example.apple.bottomnavbarwithactivity; import android.graphics.Color; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.LinearLayout; import android.widget.RadioButton; import android.widget.RadioGroup; public class DealsActivity extends BaseActivity { LinearLayout dynamicContent,bottonNavBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_deals); dynamicContent = (LinearLayout) findViewById(R.id.dynamicContent); bottonNavBar= (LinearLayout) findViewById(R.id.bottonNavBar); View wizard = getLayoutInflater().inflate(R.layout.activity_deals, null); dynamicContent.addView(wizard); RadioGroup rg=(RadioGroup)findViewById(R.id.radioGroup1); RadioButton rb=(RadioButton)findViewById(R.id.deals); rb.setCompoundDrawablesWithIntrinsicBounds( 0,R.drawable.ic_deals_clicked, 0,0); rb.setTextColor(Color.parseColor("#3F51B5")); } }
Nota: cerciórese de que usted maneja la prensa posterior correctamente. No he escrito ningún código para la prensa posterior .
Con Activity
, tienes que declarar e init que BottomBar
cada vez que carga esa activity
.
Con su problema, mi respuesta es NO .
Por cierto, puede utilizar Fragmento que le ayuda a resolver esto muy bien.
Es hora de aprender algo nuevo, hermano.
EDITAR
Usted trae Fragment
dentro de solo 1 Actividad. Y dejar BottomBar
dentro de la Activity
mientras que todos los demás vista y conjunto de datos dentro de Fragment
.
¡Solo inténtalo!
- ¿Cómo detectar cuándo el usuario inicia otra aplicación? (Androide)
- Comprobando si existe subobjeto en JSON