2010-11-27 39 views
1

J'utilise une barre de titre avec une image de fond dans mon application android.Android personnalisé TitleBar - masquer le texte

valeurs/custom_styles.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="TitlebarBackgroundStyle"> 
     <item name="android:background">@drawable/titlebar</item> 
    </style> 
    <style name="Theme.MyCustomTheme" parent="android:Theme"> 
     <item name="android:windowTitleBackgroundStyle">@style/TitlebarBackgroundStyle</item> 
     <item name="android:windowTitleSize">45dp</item> 
    </style> 
</resources> 

layout/titlebar.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal" 
android:layout_width="fill_parent" 
android:layout_height="45dip" 
android:gravity="center_vertical"> 
<ImageView 
    android:id="@+id/header" 
    android:src="@drawable/titlebar" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"/> 
</LinearLayout> 

Manifest:

<application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@style/Theme.MyCustomTheme"> 

Cela fonctionne assez bien jusqu'à présent.

La seule chose que je voudrais faire est maintenant pour cacher le texte sur la barre de titre ...

J'ai essayé:

<item name="android:textSize">0dp</item> 

mais pas de chance. Est-il possible de définir la transparence ou une autre propriété qui me permettrait de voir l'image de fond mais pas le texte?

Merci pour vos pensées Ron

+0

Je pensais que je devrais déplacer l'image de l'arrière-plan au premier plan. Peut-être que cela permettrait d'éviter le problème avec le texte. – Ron

Répondre

2

Vous pouvez le faire en Java, pas de ressources xml, puisque le TextView sur la barre de titre est déterminé par programmation des lignes dans le code source Android Java.

Vous pouvez cacher la TextView de barre de titre de cette façon:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ViewGroup decorView = (ViewGroup) activity.getWindow().getDecorView(); 
    root = (LinearLayout) decorView.getChildAt(0); 
    FrameLayout titleContainer = (FrameLayout) root.getChildAt(0); 
    TextView title = (TextView) titleContainer.getChildAt(0); 
    title.setVisibility(View.GONE); 
} 
+2

Il veut que la barre de titre ne soit pas le texte, donc setTitle (""); dans votre activité – schwiz

+0

setTitle ("") fonctionne mais apparemment le label est chargé par le système et affiché pendant un bref instant avant que setTitle ("") ne le cache. – Ron

+0

En fait, la seule façon de supprimer le texte correctement de la barre de titre de l'App est de mettre "app_name" à "" dans le manifeste ... – Ron

1

Je ne sais pas, mais vous pouvez aussi déclarer vos activités sans étiquette dans le manifeste.

<activity android:name="..."> 
+0

Je le fais réellement. Cela n'empêche pas le titre (éditable par setText()) d'être affiché ... – Ron

+0

Ok, une autre suggestion, et si vous donniez un titre, mais un titre vide?! – Tima

+0

voir mon dernier commentaire sur la réponse précédente: En fait, la seule façon de supprimer le texte correctement de la barre de titre de l'App est de mettre "app_name" à "" dans le manifeste ... – Ron

0

Essayez de définir une barre de titre personnalisée vide avec une disposition vide.

Boolean customTitle = requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);  
    setContentView(R.layout.listviewoffers); 
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.titlebarlayout); 
0

Heureusement, le chemin est trop simple (je suppose que vous avez une mise en page personnalisée pour votre titre)

Si vous ne savez pas faire comment s'il vous plaît jeter un oeil: How to Create Custom Window Title in Android

Hiding le texte du titre par défaut est une ligne de code. Il suffit d'écrire setTitle(""); à l'intérieur onCreate().

C'est tout! J'espère que cela t'aides!

1

Ajouter à votre manifeste

<application android:label="bla bla" 
       android:icon="@drawable/bla bla" 
      ---> android:theme="@android:style/Theme.NoTitleBar"> 
0

Définir votre thème pour un thème personnalisé pour l'activité. Le thème ressemblerait à ceci:

<?xml version="1.0" encoding="utf-8"?> 
<resources xmlns:android="http://schemas.android.com/apk/res/android"> 

    <style name="Theme.Black.OptionalActionBar" parent="@android:style/Theme.Black.NoTitleBar"> 
     <item name="android:windowNoTitle">false</item> 
     <item name="android:windowActionBar">true</item> 
     <item name="android:actionBarStyle">@style/MyActionBarStyle</item> 
    </style> 

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

    <style name="OptionalVisibility"> 
     <item name="android:visibility">invisible</item> 
     <item name="android:height">1dp</item> 
    </style> 

</resources> 

ActionBarStyle écrase le comportement de la barre d'action. Notez que je définis le style à la barre d'action holo, puis changez le displayOptions en showHome. Cela montrera seulement l'icône de la maison. Vous pouvez également le définir sur showTitle qui affichera uniquement le texte. Ou les deux showHome|showTitle. Si vous laissez le champ vide, le texte et l'icône disparaîtront tous ensemble.Je sais que cela fonctionnera pour 3.0 (api 11) et au-dessus ... Je ne suis pas certain que cela fonctionnera pour les niveaux API inférieurs. Je sais que c'est vieux de plusieurs années ... mais je poste pour d'autres personnes qui rencontrent ce problème.

0
android:theme="@android:style/Theme.NoTitleBar"> 

ajouter dans votre fichier Works manifeste ..

3

Si vous travaillez au niveau de l'API 11 ou au-dessus de le faire dans votre activité

final ActionBar actionBar = getActionBar(); 
actionBar.setDisplayShowTitleEnabled(false); 

Ou vous pouvez le faire en appliquant style personnalisé à votre activité comme

<style name="CustomWindowTitle" parent="android:TextAppearance.WindowTitle"> 
      <item name="android:visibility">gone</item>  
    </style>  

    <style name="MainTheme" parent="@android:Theme">  
    <item name="android:windowTitleStyle"> 
     @style/CustomWindowTitleText</item> 
</style> 

Et puis l'ajouter à votre activité comme

<activity 
      ...... 
android:theme="@style/MainTheme"/> 
+0

Cette réponse a résolu mon problème avec la suppression du titre de l'activité sur le thème Dialog qui étend l'étiquette d'une autre activité. THX –

0
android:label="" 

ajouter ce manifeste à