2017-10-10 15 views
1

Je viens de créer une barre d'actions personnalisée à partir de ma classe styles.xml qui s'affiche exactement comme je le souhaite. Et je l'ai activé à partir du fichier manifeste.Comment centraliser le texte du titre pour la barre d'actions personnalisée via Styles.XML

<style name="customStyle" parent="@style/Theme.AppCompat.Light.NoActionBar"> 
     <item name="actionBarStyle">@style/customActionBarStyle</item> 
     <item name="android:textColorPrimary">@color/titletextcolor</item> 
    </style> 

    <style name="customActionBarStyle" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse"> 
     <item name="background">@drawable/custom</item> 
    </style> 

Cependant, je suis en train de trouver un moyen Centraliser le texte du titre dans la barre d'action à partir du fichier styles.xml. S'il vous plaît, quelqu'un peut-il vous aider à faire cela?

J'ai essayé d'utiliser ceci: <item name="android:layout_gravity">center</item>. Mais cela n'a eu aucun effet.

La plupart des suggestions que j'ai vues en ligne nécessitent la création d'une disposition de barre d'outils séparément. Mais je l'ai fait et ce n'est pas ce que je veux, car cela nécessite beaucoup plus de code.

Merci.

+0

Pour autant que je sais qu'il n'y a aucun moyen facile. Par défaut, le titre suit les directives de conception de matériel et est censé être aligné sur le texte de la page qui explique pourquoi il est sur la gauche. Mais il y a toujours un concepteur qui pense que Android est iOS et veut centrer le texte. Donc, si c'est vraiment ce que vous voulez faire, vous devrez aller à la dure. – Eselfar

+0

Je viens d'essayer ça maintenant, mais ça ne marche malheureusement pas, c'est centraliser autre chose. Merci d'ailleurs. – David

Répondre

0

avoir un titre centré en ABS (si vous voulez avoir cela dans la valeur par défaut ActionBar, il suffit de retirer le « soutien » dans les noms de méthode), vous pouvez simplement faire ceci:

Dans votre activité, votre méthode onCreate():

getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 
getSupportActionBar().setCustomView(R.layout.abs_layout); 

abs_layout:

<?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="wrap_content" 
    android:orientation="vertical" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:text="my Title" 
     android:textColor="#ffffff" 
     android:id="@+id/mytext" 
     android:textSize="18sp" /> 

</LinearLayout> 

maintenant, vous devriez avoir un Actionbar avec ju st un titre. Si vous souhaitez définir un arrière-plan personnalisé, définissez-le dans la mise en page ci-dessus (mais n'oubliez pas de définir android:layout_height="match_parent").

ou avec:

getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.yourimage)); 
+0

Merci beaucoup. Cela fonctionne aussi. – David

+0

upvote ceci pour d'autres aide merci. –