web-dev-qa-db-fra.com

Android Barre d'outils: petit texte de titre en mode paysage

Je teste le nouveau thème Barre d'outils et AppCompat sur Android et j'ai rencontré un problème. Le texte du titre de ma barre d'outils semble de taille normale en mode portrait, mais il est devenu plutôt petit en mode paysage, même si je ne l'ai pas fait '' Ne faites rien dans le code pour modifier la taille du texte du titre. Voici les captures d'écran:

PortraitLandscape

activity_main.xml:

<!-- A DrawerLayout is intended to be used as the top-level content view using match_parent for both width and height to consume the full space available. -->
<LinearLayout
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:orientation="vertical"
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    tools:context="com.techfunmyanmar.jujaka.ui.MainActivity">

    <Android.support.v7.widget.Toolbar
        Android:id="@+id/main_toolbar"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:background="?attr/colorPrimary"
        app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

    <Android.support.v4.widget.DrawerLayout
        Android:id="@+id/drawer_layout"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent">

        <!-- As the main content view, the view below consumes the entire
             space available using match_parent in both dimensions. -->
        <FrameLayout
            Android:id="@+id/container"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent" />

        <!-- Android:layout_gravity="start" tells DrawerLayout to treat
             this as a sliding drawer on the left side for left-to-right
             languages and on the right side for right-to-left languages.
             If you're not building against API 17 or higher, use
             Android:layout_gravity="left" instead. -->
        <!-- The drawer is given a fixed width in dp and extends the full height of
             the container. -->
        <fragment
            Android:id="@+id/navigation_drawer"
            Android:name="com.techfunmyanmar.jujaka.ui.NavigationDrawerFragment"
            Android:layout_width="@dimen/navigation_drawer_width"
            Android:layout_height="match_parent"
            Android:layout_gravity="start"
            tools:layout="@layout/fragment_navigation_drawer" />
    </Android.support.v4.widget.DrawerLayout>
</LinearLayout>

styles.xml:

<resources>
    <!-- Base application theme. -->
    <style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="windowActionBar">false</item>

        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/primary</item>
        <item name="colorPrimaryDark">@color/primary_dark</item>
        <item name="colorAccent">@color/accent</item>

    </style>

    <!-- Main application theme. -->
    <style name="AppTheme" parent="AppBaseTheme">

    </style>

    <style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
        <item name="spinBars">true</item>
    </style>
</resources>
57
Nyein Chan Wynn

J'ai essayé de définir Android:titleTextAppearance de la barre d'outils mais le style n'était pas appliqué. Ensuite, j'ai réalisé que j'utilisais le thème AppCompat, j'ai donc utilisé app:titleTextAppearance et le style est maintenant appliqué. Il semble que les minuscules en paysage soient un problème dans le AppCompat.Toolbar.Title le style lui-même, je l'ai donc remplacé pour définir manuellement la taille de la police. Le code final:

XML de la barre d'outils:

<Android.support.v7.widget.Toolbar
        Android:id="@+id/main_toolbar"
        Android:layout_width="match_parent"
        Android:layout_height="?attr/actionBarSize"
        Android:background="?attr/colorPrimary"
        app:titleTextAppearance="@style/ToolbarTitle"
        Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

Style de barre d'outils:

<style name="ToolbarTitle" parent="@style/TextAppearance.Widget.AppCompat.Toolbar.Title">
        <item name="Android:textSize">20sp</item>
</style>
104
Nyein Chan Wynn

AOSP Issue # 170707 a été écrit concernant la modification de la taille du texte pour le titre et le sous-titre. La réponse du membre du projet était "Fonctionne comme prévu. Identique au comportement du framework." Bien que je ne trouve pas que la modification de la taille du texte soit le comportement par défaut souhaitable, il semble que les ingénieurs d'AppCompat devaient maintenir la cohérence avec le comportement du framework (défectueux). Les développeurs sont ensuite laissés à remplacer les styles par défaut comme décrit dans la réponse de Chilly Chan.

Ajouts à la réponse de Chilly Chan:

1) La taille du texte des sous-titres peut être contrôlée de manière similaire en définissant un autre style dérivé de TextAppearance.Widget.AppCompat.Toolbar.Subtitle.

2) Les valeurs par défaut pour la taille du titre/sous-titre en orientation portrait sont 20dp/16dp (sur mon Galaxy S3, 4.4.2.). L'exemple de Chilly Chan spécifie "17sp". Utilisez "sp" uniquement si vous souhaitez laisser le réglage des préférences utilisateur affecter la taille du titre/sous-titre.

11
Bob Snyder

Je cherchais une solution sans barre d'outils personnalisée, mais avec style personnalisé et ce code a fait l'affaire pour moi:

styles.xml

<style name="MyTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="actionBarStyle">@style/MyActionBar</item>
</style>

<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
    <item name="titleTextStyle">@style/MyTitleTextStyle</item>
</style>

<style name="MyTitleTextStyle" parent="@style/TextAppearance.AppCompat.Title">
    <item name="Android:textSize">20sp</item> <!-- Default for portrait is 20sp and for landscape 14sp-->
</style>

AndroidManifest.xml

    <activity
        Android:name=".MainActivity"
        Android:label="@string/app_name"
        Android:theme="@style/MyTheme"/>

Où MainActivity étend AppCompatActivity; testé sur API 19, 22 et 23.

8
Michał Baran

Essayez d'ajouter cela à votre section de barre d'outils sous le fichier activity_main.xml.

Android: minHeight = "? Android: attr/actionBarSize"

J'ai également remarqué que vous utilisez une barre d'action sombre standard, suggérez d'utiliser le thème sans barre d'action, défini une nouvelle barre d'outils où

 Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
    setSupportActionBar(toolbar);

<Android.support.v7.widget.Toolbar
    Android:id=”@+id/my_awesome_toolbar”
    Android:layout_height=”wrap_content”
    Android:layout_width=”match_parent”
    Android:minHeight=”?attr/actionBarSize”
    Android:background=”?attr/colorPrimary” />
2