¿Cómo cambio el título y el icono de la barra de acción de Android?


225

Estoy tratando de hacer algunas cosas en ActionBar en Android.

Ya he agregado nuevos elementos en el lado derecho de la barra de acción.

¿Cómo puedo cambiar el lado izquierdo de la barra de acción? Quiero cambiar el ícono y el texto, y quiero agregar un "Botón Atrás" en la barra de acción para las otras pantallas

Barra de acción de Android

Respuestas:


514

Esto es muy simple de lograr

Si desea cambiarlo en el código, llame al:

setTitle("My new title");
getActionBar().setIcon(R.drawable.my_icon);

Y establece los valores a lo que quieras.

O, en el archivo XML manifiesto de Android:

<activity android:name=".MyActivity" 
       android:icon="@drawable/my_icon" 
       android:label="My new title" />  

Para habilitar el botón de retroceso en su aplicación use:

 getActionBar().setHomeButtonEnabled(true);
 getActionBar().setDisplayHomeAsUpEnabled(true);

Todo el código debe colocarse en su onCreatepara que el cambio de etiqueta / ícono sea transparente para el usuario, pero en realidad se puede invocar en cualquier lugar durante el ciclo de vida de la actividad.


23
Si está utilizando la biblioteca de soporte para agregar la barra de acción, use en getSupportActionBarlugar de getActionBar.
Rick Pastoor

3
getActionBar().setHomeButtonEnabled(true)usa el nivel de API 14 o superior, si solo desea la funcionalidad del botón de retroceso en las API más antiguas y más nuevas que solo necesitagetActionBar().setDisplayHomeAsUpEnabled(true)
Akshat Agarwal

3
getSupportActionBar (). setDisplayShowTitleEnabled (true); antes de setTitle ("123");
Jose Manuel Abarca Rodríguez

Si usa el código getActionBar (). SetIcon (R.drawable.my_icon); ¿Puedes hacer que se pueda hacer clic?
Skitty

1
@ JoseManuelAbarcaRodríguez Gracias, eso era lo que me faltaba. En Kotlin: supportActionBar?.setDisplayShowTitleEnabled(true)entonces supportActionBar?.title = "your title". Y tiene que hacerse en onResume, no en onCreate, al crear la actividad con startActivity.
Eric Aya

18

Para que todas tus barras de acción puedan usar un solo ícono, puedes hacerlo en tu Manifiesto de Android.

<application
    android:logo="@drawable/Image">

    ...

</application>

1
gracias- Quería un ícono diferente para fuera de la aplicación (como se ve en "Todas las aplicaciones") y otro ícono a la izquierda de la barra de acción. Y esto funcionó. El archivo de manifiesto todavía tiene android: icon = "@ drawable / ic_launcher"
flobacca

2
Esta es la forma correcta, ya que pre-loadsel icono, el icono de configuración programática es lento.
Muhammad Babar

11

Solo necesita agregar estas 3 líneas de código. Reemplace el icono con su propio icono. Si quieres generar íconos usa esto

getSupportActionBar().setHomeAsUpIndicator(R.drawable.icon_back_arrow);
getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);

11

En Android 5.0, las pautas de diseño de materiales desalientan el uso del icono en actionBar

para habilitarlo agregue el siguiente código

getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setLogo(R.mipmap.ic_launcher);
getSupportActionBar().setDisplayUseLogoEnabled(true);

el crédito va al autor de este artículo


9

Si desea cambiar el título de la barra de acción, simplemente ingrese el siguiente código de 1 línea en onCreate () de su Actividad

getActionBar().setTitle("Test");

¿Cómo puedo animar este cambio de título?
Srikar Reddy

7

Puede cambiar el ícono en su agregando el ícono que desee a sus respectivas carpetas dibujables, y luego cambiando esta línea en su archivo AndroidManifest.xml:

android:icon="@drawable/ic_launcher"

para que coincida con el nombre de su ícono. O coloque su icono como ic_launcher, si son el mismo icono. En cuanto a lo que dice, agregue o cambie las cadenas que coincidan con eso en su archivo res / values ​​/ strings.xml. Luego, una vez más en su archivo AndroidManifest.xml, cambie esta línea:

android:label="@string/app_name"

a cualquier cuerda que tengas en su. Tendrá que hacer esto para la aplicación en su conjunto y para las actividades que desee, pero las líneas son las mismas.

Espero que esto ayude.


¿Qué tamaño (dp) debe tener esta android:iconetiqueta de actividad?
cuddlecheek

6
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle(getString(R.string.titolo));
actionBar.setIcon(R.mipmap.ic_launcher);
actionBar.setDisplayShowHomeEnabled(true);

5

Para eso, puedes hacerlo de 2 maneras: XML o Java. Ver aquí: Cómo cambiar el texto en la barra de acción

Entonces:

XML:

<activity android:name=".Hello_World"
              android:label="This is the Hello World Application">
</activity>

Java:

public class TitleBar extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);

       final boolean customTitleSupported = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

       setContentView(R.layout.main);


       if ( customTitleSupported ) {
           getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebar);
           }

       final TextView myTitleText = (TextView) findViewById(R.id.myTitle);
       if ( myTitleText != null ) {
           myTitleText.setText("NEW TITLE");

           // user can also set color using "Color" and then "Color value constant"
          // myTitleText.setBackgroundColor(Color.GREEN);
       }
 }
}

2
Para hacerlo desde el código, debe llamar setTitle(CharSequence text)o setTitle(int titleRes). No lo use a requestWindowFeature(Window.FEATURE_CUSTOM_TITLE)menos que esté planeando reemplazar toda la barra de título con su propia Vista personalizada.
Karakuri

3

Para el título establecido :

getActionBar().setTitle("Title");

Para el conjunto de iconos :

getActionBar().setIcon(R.drawable.YOUR_ICON_NAME);

2

Usé la siguiente llamada adentro onNavigationItemSelected:

HomeActivity.this.setTitle(item.getTitle());

1

Agregue el siguiente código dentro de una función onCreate en su actividad.

setTitle("NewName");

1

Este trabajo para mi:

getActionBar().setHomeButtonEnabled(true);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeAsUpIndicator(R.mipmap.baseline_dehaze_white_24);

0

El título de la barra de acción, por defecto, usará la etiqueta de la actividad actual, pero también puede establecerlo mediante programación a través de ActionBar.setTitle() .

Para implementar la funcionalidad del botón "Atrás" (más precisamente, "Arriba") del que está hablando, lea la sección "Uso del icono de la aplicación para la navegación" de guía del desarrollador barra de acción .

Finalmente, para cambiar el ícono, la guía también lo cubre. En resumen, la barra de acción mostrará la imagen suministrada android:iconen su manifiesto applicationo activityelemento, si hay uno. La práctica típica es crear un icono de aplicación (en todas las diversas densidades que necesitará) nombrado ic_launcher.pngy colocarlo en sus drawable-*directorios.


0

Recibí un non-static method setTitle(CharSequence) cannot be referenced from a static contexterror porque lo usé setTitle()en la clase estática PlaceholderFragment. Lo resolví usandogetActivity().getActionBar().setTitle("new title");


0

Vaya al manifiesto en la actividad específica que desea cambiar Barra de acción Nombre del título y escriba android: label = "Title name"


0

Vaya al archivo AndroidManifest.xml . Encuentra la <application>etiqueta Allí puedes ver un atributo

android:label="@string/app_name"

Ahora ve a res> values> strings.xml

Cambiar el

<string name="app_name">MainActivity</string> 

a

<string name="app_name">Your Desired Name</string>

Ejemplo

AndroidManifest.xml

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".SubmitForm">

        </activity>
    </application>

strings.xml

<resources>
    <string name="app_name">Your Desired Name</string>
    <string name="action_settings">Settings</string>
</resources>

0

También puede hacer lo siguiente:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
        setSupportActionBar(toolbar)
        setTitle("Activity 2")
    }
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.