tamaño superior studio navegacion iconos icon how español elementos cómo barra bar añadir agregar android android-actionbar android-styles android-style-tabhost

superior - icon toolbar android



Cómo hacer que ActionBar y la barra apilada compartan la misma imagen de fondo (2)

¿Es posible que la barra de acciones y su barra apilada (una que contenga pestañas de navegación) compartan la misma imagen de fondo? ¿uno que comienza desde la barra de acciones y termina en la barra apilada?

Actualmente el camino estoy implementando esto, estoy terminando teniendo una barra de acción con su propia imagen y barra apilada con la suya propia.

mi styles.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="android:actionBarStyle">@style/MyActionBar</item> <item name="android:actionMenuTextColor">@color/app_yellow</item> <item name="android:windowActionBarOverlay">true</item> <!-- Support library compatibility --> <item name="actionBarStyle">@style/MyActionBar</item> <item name="actionMenuTextColor">@color/app_yellow</item> </style> <!-- ActionBar styles --> <style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar"> <item name="android:titleTextStyle">@style/MyActionBarTitleText</item> <item name="android:actionBarTabTextStyle">@style/MyActionBarTabText</item> <item name ="android:actionBarTabStyle">@style/MyTabStyle</item> <item name="background">@drawable/actionbar</item> </style> <!-- individual ActionBar tabs style --> <style name="MyTabStyle" parent ="Widget.AppCompat.Light.ActionBar.TabView"> <item name ="background">@android:color/transparent</item> <item name ="android:background">@android:color/transparent</item> </style>

en mi actividad

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ActionBar actionBar = getSupportActionBar(); // Specify that tabs should be displayed in the action bar. actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); actionBar.setLogo(R.mipmap.ic_launcher); actionBar.setDisplayUseLogoEnabled(true); actionBar.setDisplayShowHomeEnabled(true); actionBar.setStackedBackgroundDrawable(getResources().getDrawable(R.drawable.actionbar));


Gracias por su respuesta en profundidad OP. Para los que vengan en el futuro, si desea mostrar el botón Atrás en la barra de herramientas, empujará todas las vistas posteriores en la Toolbar de Toolbar hacia el lado aproximadamente 50dp, incluso cuando se alinee debajo, incluso cuando se usa la app:contentInsetStart="0dp" . Debido a esto, acabo de buscar los fondos transparentes y tener una vista detrás de ellos.


De la orientación de Michael De Soto (ver su comentario anterior), pude tener la barra de acciones y la barra apilada compartir la misma imagen de fondo mediante el uso de una barra de herramientas que tiene

  • Detalles de la barra de acciones (por ejemplo, iconos, títulos) en vistas (vista de texto para títulos, imágenes para iconos, etc.)

  • Detalles de barras apiladas (básicamente pestañas) en un tablayout.

Aquí como lo implementé chicos

mi actividad xml

<android.support.v7.widget.Toolbar android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="?attr/actionBarSize" android:id="@+id/mainActivityBar" android:layout_alignParentTop="true" android:background="@drawable/actionbar" app:contentInsetLeft="0dp" app:contentInsetStart="0dp" app:contentInsetEnd="0dp" app:contentInsetRight="0dp" > <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" android:text="President" android:id="@+id/appname_1" android:background="@android:color/transparent" android:textColor="#ffffff" android:layout_marginLeft="20dp" /> <android.support.design.widget.TabLayout android:id="@+id/tabs" style="@style/myCustomTabLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@android:color/transparent" android:layout_below="@+id/appname_1" android:layout_alignParentEnd="true" android:layout_alignParentStart="false" android:layout_alignParentLeft="false" android:layout_alignParentRight="true" android:layout_alignParentBottom="false" android:layout_alignLeft="@+id/appname_1" app:tabGravity="fill" app:tabMode="scrollable"/> </RelativeLayout> </android.support.v7.widget.Toolbar>

agregué lo siguiente en mi styles.xml

<style name="mainActivityTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="windowActionBar">false</item> <item name="android:windowNoTitle">true</item> <item name="android:textColorSecondary">@android:color/white</item> <!--We will be using the toolbar so no need to show ActionBar--> <item name="android:windowActionBar">false</item> </style> <style name="myCustomTabLayout" parent="Widget.Design.TabLayout"> <item name="tabIndicatorColor">?attr/colorAccent</item> <item name="tabIndicatorHeight">2dp</item> <item name="tabSelectedTextColor">?android:textColorPrimary</item> </style>

Finalmente, mi actividad

public class MainActivity extends AppCompatActivity { private SectionsPagerAdapter mSectionsPagerAdapter; TabLayout tabLayout; private ViewPager mViewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar =(Toolbar) findViewById(R.id.mainActivityBar); setSupportActionBar(toolbar); tabLayout = (TabLayout) findViewById(R.id.tabs); // Create the adapter that will return a fragment for each of the three // primary sections of the activity. mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); // Set up the ViewPager with the sections adapter. mViewPager = (ViewPager) findViewById(R.id.pager); mViewPager.setAdapter(mSectionsPagerAdapter); mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); tabLayout.setupWithViewPager(mViewPager); } public class SectionsPagerAdapter extends FragmentStatePagerAdapter { public SectionsPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { // getItem is called to instantiate the fragment for the given page. switch (position) { case 0: return Item1fragment.newInstance(); case 1: return Item2fragment.newInstance(); case 2: return Item3fragment.newInstance(); } return null; } @Override public int getCount() { // Show 3 total pages. return 3; } @Override public CharSequence getPageTitle(int position) { Locale l = Locale.getDefault(); switch (position) { case 0: return "Item1; case 1: return "Item2"; case 2: return "Item3"; } return ""; } } }