android - longitud - etiquetas titulo
¿Cómo establecer una etiqueta diferente para el lanzador en lugar del título de la actividad? (8)
Aparentemente, <intent-filter>
puede tener un atributo de etiqueta. Si está ausente, la etiqueta se hereda del componente principal (ya sea Actividad o Aplicación). Entonces, al usar esto, puede establecer una etiqueta para el ícono del iniciador, mientras mantiene la Actividad con su propio título.
Tenga en cuenta que, si bien esto funciona en emuladores, es posible que no funcione en dispositivos reales, ya que depende de la implementación del iniciador que se utilice.
http://developer.android.com/guide/topics/manifest/intent-filter-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 margen: <intent-filter> también puede tener un atributo de icono, pero inexplicablemente no anula el icono especificado en la Actividad. Esto puede ser importante para usted si planea usar la barra de acción nativa en SDK 11+, que usa el icono y el logotipo especificados en la actividad.
Información agregada: la etiqueta se hereda de Activity y no de 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 ícono del iniciador, si no colocamos una etiqueta en el interior como se mencionó anteriormente.
Esta pregunta se ha hecho antes, ¡pero sin ninguna respuesta satisfactoria! Así que lo estoy intentando de nuevo.
Quiero darle al icono del iniciador de mi aplicación (el que se muestra en la pantalla de inicio) un título diferente y más corto. Parece que el lanzador toma su etiqueta de la sección mainfest sobre la etiqueta de la actividad principal, como aquí:
<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 cambié la referencia original al nombre @ string / app_name de mi aplicación a un recurso de cadena diferente y más corto aquí.
PERO - grande PERO : ¡esto también, por supuesto, cambia el título predeterminado de esta actividad! Y no quería que eso sucediera, ¡hay suficiente espacio para un nombre de aplicación largo! Configurar el título largo nuevamente en onCreate
usando el setTitle(int)
tampoco sirve, porque el nombre corto será visible para el usuario por un corto tiempo, ¡pero lo suficiente como para notarlo!
Y, por favor, no respondas a mi pregunta refiriéndome a una barra de título personalizada ... ¡No quiero ir tan lejos, solo por el título de una cadena estúpida! ¡Es un dolor dibujar una barra de título personalizada por tan poco efecto!
¿No hay una manera fácil de darle al lanzador una cadena diferente para mostrar? ¡Gracias por tus respuestas!
Edición: una razón más por la que tener una barra de título personalizada es una molestia es que no se verá como la barra de título predeterminada, ¡tendría que hacer explícitamente cosas para que se vea igual en cada dispositivo! ¡Y eso no puede ser una solución si, después de todo, no quiero una apariencia diferente!
El lanzador en realidad muestra android: label y android: ícono de actividad (es) que declara
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
así que la etiqueta de aplicación no sirve de nada.
Es probable que esto no satisfaga lo que quiere hacer, pero si ha pensado en crear una pantalla de inicio que se muestre brevemente (con el título predeterminado) y luego inicie su nueva actividad "principal" real con el título que elija usando setTitle(int)
método? No he intentado esto para ver si funciona, pero eso podría crear un entorno agradable que no muestre la naturaleza menos que perfecta de lo que está tratando de lograr.
Estaba buscando lo mismo 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 al icono del iniciador de aplicaciones.
Para agregar un nombre más grande a la barra de la aplicación, solo tiene que agregar:
this.setTitle(getResources().getString(R.string.app_name));
a su actividad principal del archivo java.
La solución de Mark Renouf me falla (usando Nexus 4 y Android 4.4). Falla al usar accesos directos, los accesos directos usan la etiqueta de actividad principal en lugar del nombre de la aplicación. Vi algunas aplicaciones como GMail y Google Keep que funcionan bien. Pero cuando los abres, me doy cuenta de que es como un momento entre que el título está en blanco y el título aparece (lo que parece mejor que el nombre de la aplicación parpadea antes de configurar el título usando setTitle ()).
Así que aquí está la mejor solución que encontré :
Cree un estilo donde la barra de acción no muestre 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 cajón de navegación y un logotipo (porque uso un logotipo y un icono para mi aplicación). Puedes usar lo que quieras pero no usar showTitle . Luego, en el archivo AndroidManifest.xml, establece el tema para 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>
Luego, en el método onCreate () de MainActivity, establece el título de tu barra de acción:
getActionBar().setTitle(R.string.your_title);
Después de eso , puedes llamar:
getActionBar().setDisplayShowTitleEnabled(true);
Difícil pero vale la pena.
Para cualquier persona que use la barra de herramientas Support / Appcompat a través del método setSupportActionBar()
, el título de la actividad se puede configurar en la barra de herramientas XML:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
app:title="@string/activity_title"
...
/>
Esto anulará las etiquetas de aplicación y actividad establecidas en el manifiesto.
Puedes 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ás 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 su archivo AndroidManifest.xml
solo tiene que configurar el título de la aplicación, que es lo que se mostrará en el icono del iniciador. Para tu actividad no necesitas establecer un título allí.
He encontrado una solución para este problema
En manifest.xml
Escriba el nombre de su aplicación en el android:label
de la actividad de inicio (principal) .
Esto hará que la etiqueta de su actividad principal sea la misma que la etiqueta de la aplicación.
Luego, en la función onCreate()
de su actividad Launcher (main), escriba esta declaración
if (getSupportActionBar() != null) {
getSupportActionBar().setTitle("main activity label");
}
Aquí escriba la etiqueta que desea asignar a su actividad Launcher (principal).