2010-07-10 4 views
6

Comment puis-je utiliser le style de titre de fenêtre par défaut androïdes pour faire ma propre TextView?Faire une vue de titre personnalisée à partir de par défaut sur Android

J'ai fait beaucoup de devinettes et fait un TextView qui a tout ce que la barre de titre par défaut a, à l'exception de l'ombre du texte (et un peu de remplissage/marges etc je pense).

est ici essentiellement ce que j'ai essayé:

MainUI.xml

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 

    setContentView(R.layout.main); 

    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title_bar); 
} 

title_bar.xml

<?xml version="1.0" encoding="utf-8"?> 

<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/myTitle" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:textAppearance="@android:style/TextAppearance.WindowTitle" 
    android:background="@android:drawable/title_bar" 
    android:text="This is my new title" /> 

Edit:

J'ai trouvé quelques articles connexes intéressants au makemachine et anddev.

Bien que je ne l'aime pas, j'ai copié certains attributs de l'implémentation style.xml.

Est-il possible d'éviter de copier les attributs de cette manière statique? Ce qui suit rendu presque parfait, la différence est en fait que l'original a "coupé" les 2-3 premiers pixels de l'ombre du titre, tandis que mon TextView ne fait pas.

<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/myTitle" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:gravity="center_vertical" 
    android:shadowColor="#BB000000" 
    android:shadowRadius="2.75" 
    android:singleLine="true" 
    android:textAppearance="@android:style/TextAppearance.WindowTitle" 
    android:background="@android:drawable/title_bar" 
    android:text="This is my new title" /> 

Il est également important de remplacer l'androïde par défaut: windowTitleBackgroundStyle avec une couleur transparente, car le défaut comprend certains types de remplissage, etc. que vous ne voulez pas être l'emballage de votre barre de titre personnalisé.

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="CustomTheme" parent="android:Theme"> 
    <item name="android:windowTitleBackgroundStyle">@android:color/transparent</item> 
    </style> 
</resources> 

Rappelez-vous pour activer le thème dans votre AndroidManifest.xml

+0

Je ne comprends pas ce que vous essayez de faire. Êtes-vous prêt à copier la barre de titre par défaut faite par Android? – Macarse

+0

Oui, tant que je peux le modifier. Je veux que la barre de titre fonctionne également comme une barre de progression :-) – Steinbitglis

+1

ne sais pas si cela aidera ou non, mais [RomManager] (https://market.android.com/details?id=com.koushikdutta.rommanager&hl= fr) fait cela quand vous allez télécharger roms, la barre de titre se remplit de gris de gauche à droite pendant le chargement. Si vous l'exécutez lors de l'exécution de la visionneuse Hiérarchie, vous pouvez voir qu'ils ont la barre de progression et le cercle de progression. –

Répondre

0

essayer cela a fonctionné pour moi:

mettre le reste du code en place ..

super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
    setContentView(R.layout.main); 
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.main_header); 
    TextView home = (TextView) findViewById(R.id.home); 
     if (home != null) { 
      /* your code here */ 
      home.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // the action that u want to perform 
       Menu.this.finish(); 
       Intent i= new Intent(Main.this,Destination.class); 
       startActivity(i); 
      } 
     }); 
     } 

créer un fichier de disposition main_header

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 


    <RelativeLayout 
     android:id="@+id/relativeLayout1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <TextView 
      android:id="@+id/textView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentTop="true" 
      android:text="Main Menu" 
      android:textStyle="bold" 
      android:textSize="10pt" /> 

     <TextView 
      android:id="@+id/home" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignBaseline="@+id/textView1" 
      android:layout_alignBottom="@+id/textView1" 
      android:layout_alignParentRight="true" 
      android:textStyle="bold" 
      android:text="Home" 
      android:textAppearance="?android:attr/textAppearanceLarge" /> 

    </RelativeLayout> 

</LinearLayout> 

Ici, lorsque nous exécutons le code, il affiche une barre de titre personnalisée dans laquelle il y a deux textes et lorsque nous cliquons dessus, il passe à la classe suivante (à votre classe de destination). nous pouvons également changer la couleur, la police de taille etc. et ajouter également des boutons etc. à la barre de titre faite sur commande.

Questions connexes