Pregunta

Esta pregunta se ha hecho antes - pero sin ninguna respuesta satisfactoria a todos! Así que estoy tratando de nuevo.

Quiero dar mi icono de la aplicación de inicio (la que se muestra en la PantInicial!) Un subtítulo más corto diferente. Parece el lanzador toma su etiqueta de la sección mainfest sobre la etiqueta de la actividad principal, como en este caso:

<activity android:name="MainActivity" android:label="@string/app_short_name">
<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

Ya cambiado la referencia original a nombre de mi aplicación @ string / nombre_apl a una diferente, recurso de cadena más corta aquí.

PERO - grande y : esto también, por supuesto, cambia el título por defecto de esta actividad! Y yo no quiero que eso ocurra, hay suficiente espacio para un nombre de la aplicación a largo! Ajuste del título largo de nuevo en onCreate utilizando el método setTitle(int) no es bueno tampoco, porque el nombre corto será visible para el usuario durante un corto tiempo, pero el tiempo suficiente para aviso!

Y - por favor no responder a mi pregunta refiriendo la barra de título de una medida ... no quiero ir tan lejos, sólo a causa de un título cadena estúpida! Es un dolor para dibujar una barra de título personalizado para tan poco efecto!

¿Hay hay una manera fácil dar sólo el lanzador una cadena diferente a la pantalla? Gracias por sus respuestas!

Editar Una razón más por tener una barra de título personalizado es un dolor que no se parecerá a la barra de título por defecto, tendría que hacer de forma explícita las cosas para que se vea igual en cada dispositivo! Y eso no puede ser una solución si, después de todo, no quiero un aspecto diferente!

¿Fue útil?

Solución

Al parecer <intent-filter> puede tener un atributo de etiqueta. Si es ausente la etiqueta se hereda de la componente de los padres (ya sea la actividad o aplicación). Por lo tanto el uso de este, se puede establecer una etiqueta para el icono del lanzador, sin dejar de tener la actividad con su propio título.

Tenga en cuenta que, si bien esto funciona en emuladores, puede que no funcione en dispositivos reales, ya que depende de la aplicación que se utiliza lanzador.

http://developer.android.com/guide/ temas / manifiesta / intención de filtro element.html

<activity
  android:name=".ui.HomeActivity"
  android:label="@string/title_home_activity"
  android:icon="@drawable/icon">
  <intent-filter android:label="@string/app_name">
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>
  

Nota al pie: también puede tener un atributo icono, pero   inexplicablemente lo hace no anular el icono especificado en el   Actividad. Esto puede ser importante para usted si va a utilizar el nativo   Barra de acciones en el SDK de 11+, que utiliza icono Logo especifica en la   La actividad.

Información de Agregado:. La etiqueta está siendo heredada de actividad y no la aplicación

 <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"       
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <activity
            android:name=".StartActivity"
            android:label="@string/app_long_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

En este caso, app_long_name se mostrará con el icono del lanzador, si no ponemos dentro de la etiqueta como se mencionó anteriormente.

Otros consejos

Yo estaba buscando la misma cosa y esto es lo que funcionó para mí.

<activity android:name="MainActivity" android:label="@string/app_short_name">
<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

Esto le dará un nombre corto para el icono de la aplicación de inicio.

Para añadir un nombre más grande de la barra de aplicaciones sólo hay que añadir:

this.setTitle(getResources().getString(R.string.app_name));

a su archivo principal actividad de Java.

Solución de Marcos Renouf deja de (usando Nexus 4 y Android 4.4). Se produce un error al utilizar accesos directos, atajos utilizan la etiqueta principal actividad en lugar del nombre de la aplicación. Vi algunas aplicaciones como Gmail y Google Keep que trabaja muy bien. Pero cuando los abra, noto que es como un momento entre el título está en blanco y el aparece el título (que parece mejor que el nombre de la aplicación intermitente antes de establecer el título utilizando setTitle ()).

Así que aquí es la mejor solución que encontré

Crear un estilo donde la Barra de acciones no muestra el título / etiqueta:

<style name="NoActionBarTitle" parent="android:Theme.Holo.Light.DarkActionBar">
    <item name="android:actionBarStyle">@style/NoActionBarTitle.ActionBar</item>
</style>

<style name="NoActionBarTitle.ActionBar" parent="@android:style/Widget.Holo.ActionBar">
    <item name="android:displayOptions">showHome|useLogo</item>
</style>

Estoy usando un panel lateral de navegación y el uso de un logotipo (porque uso un logotipo y un icono para mi aplicación). Puede usar lo que sea pero no utilice ShowTitle . Luego, en el AndroidManifest.xml, establecer el tema de la MainActivity:

<activity
    android:name="com.xx.xxx.MainActivity"
    android:logo="@drawable/ic_icon_padding"
    android:theme="@style/NoActionBarTitle">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

A continuación, en el método onCreate () de la MainActivity, establece el título de la barra de acciones:

getActionBar().setTitle(R.string.your_title);

Después de que , puede llamar a:

getActionBar().setDisplayShowTitleEnabled(true);

difícil pero vale la pena.

Esto probablemente no satisfacer lo que quiere hacer, pero ¿ha pensado en crear una pantalla de bienvenida que aparece muy brevemente (con el título predeterminado) y luego lanza su nueva actividad real "principal" con el título de su elección utilizando el método setTitle(int)? No he probado esto para ver si funciona, pero que podría crear un trabajo agradable en torno a que no muestra la naturaleza sin fisuras menos de lo que usted está tratando de lograr.

Para cualquier persona que utilice Soporte / Appcompat Barra de herramientas a través del método setSupportActionBar(), el título de la actividad se puede ajustar en la barra de herramientas XML:

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    app:title="@string/activity_title"
    ...
/>

Esto anulará etiquetas de aplicación y de la actividad fijados en el manifiesto.

android.support.v7.widget.Toolbar

He encontrado una solución para este problema

   En manifest.xml
Escriba su nombre de aplicación en el android:label de la actividad lanzador (principal) .
Esto hará que la etiqueta de su actividad misma que la de la etiqueta de la aplicación.
Luego, en la función onCreate() de su Lanzador de actividad (principal) escribir esta declaración

if (getSupportActionBar() != null) {
            getSupportActionBar().setTitle("main activity label");
        }

A continuación, escriba la etiqueta que se quiere dar a su actividad Launcher (principal).

Puede hacer algo como esto:

public class FooBar extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // change title
        requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
        setContentView(R.layout.main);
        getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.my_title);
    }
}

tendrá que crear un diseño personalizado para mantener el título. Podría ser tan simple como (llamado my_title.xml en este caso):

<?xml version="1.0" encoding="utf-8"?>
<TextView
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="foo bar"/>

En el archivo AndroidManifest.xml sólo hay que definir el título de la aplicación, que es lo que va a ser mostrado en el icono de lanzador. Para su actividad que no es necesario establecer un título allí.

El lanzador en realidad muestra Android: etiqueta y android: icono de Actividad (es) que declaran

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

so etiqueta de aplicación es de ninguna utilidad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top