Barra de herramientas de Android: texto de título pequeño en modo horizontal

Estoy probando el nuevo tema de la barra de herramientas y AppCompat en Android y me encontré con un problema. Mi título de la barra de herramientas de texto se ve de tamaño normal en el modo retrato, pero se volvió bastante pequeño en el modo de paisaje, aunque no hice nada en el código para cambiar el tamaño del texto del título. Aquí están las capturas de pantalla:

RetratoPaisaje

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> 

Traté de establecer android:titleTextAppearance de la barra de herramientas, pero el estilo no se estaba aplicando. Entonces me di cuenta de que estoy usando el tema de AppCompat así que usé app:titleTextAppearance y el estilo ahora se está aplicando. Parece que las letras pequeñas en el paisaje son un problema en el estilo AppCompat.Toolbar.Title incorporado en sí, por lo que lo AppCompat.Toolbar.Title para establecer el tamaño de fuente manualmente. El código final:

XML de la barra de herramientas:

 <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" /> 

Estilo de la barra de herramientas:

 <style name="ToolbarTitle" parent="@style/TextAppearance.Widget.AppCompat.Toolbar.Title"> <item name="android:textSize">20sp</item> </style> 

Se escribió el número 170707 de AOSP con respecto al cambio en el tamaño del texto para el título y el subtítulo. La respuesta del miembro del proyecto fue "Funciona como se pretende, idéntico al comportamiento del marco". Aunque no encuentro que cambiar el tamaño del texto sea el comportamiento por defecto deseable, suena como si los ingenieros de AppCompat tuvieran que mantener la consistencia con el comportamiento del marco (defectuoso). A continuación, los desarrolladores deben sustituir los estilos por defecto como se describe en la respuesta de Chilly Chan.

Adiciones a la respuesta de Chilly Chan:

1) El tamaño del texto del subtítulo se puede controlar de una manera similar definiendo otro estilo derivado de TextAppearance.Widget.AppCompat.Toolbar.Subtitle.

2) Los valores predeterminados para el tamaño del título / subtítulo en orientación vertical son 20dp / 16dp (en mi Galaxy S3, 4.4.2.). El ejemplo de Chilly Chan especifica "17sp". Utilice "sp" sólo si desea permitir que la configuración de preferencias del usuario afecte al tamaño del título / subtítulo.

Trate de añadir esto a su sección de barra de herramientas en el activity_main.xml.

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

También me di cuenta de que está utilizando la barra de acción oscura estándar, sugieren utilizar el tema sin barra de acción, se define una nueva barra de herramientas donde

  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” /> 

Yo estaba buscando una solución sin la barra de herramientas personalizada , pero con estilo personalizado y este código hizo el truco para mí:

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"/> 

Donde MainActivity extiende AppCompatActivity; Probado en API 19, 22 y 23.

Creo que tiene que ver con algunos cambios en el diseño realizados al girar el dispositivo, por lo que parece que se puede evitar el cambio de tamaño mediante la adición de algo como

  android:configChanges="orientation|screenSize" 

En AndroidManifest.xml para la actividad en la que estás. Como siempre, android: configChanges tiene más implicaciones por lo que debe utilizarse sólo si realmente lo necesita 🙂

  • Estilizar la vista de búsqueda de android y la lista desplegable en la barra de acciones
  • ¿Cómo puedo cambiar el color de fondo de la ActionBar de una ActionBarActivity usando XML?
  • Error al recuperar el padre del elemento: No se encontró ningún recurso que coincida con el nombre dado 'android: Theme.Material.Light'
  • Android: cambio de color de la barra de estado para el nivel de API inferior a 21
  • Inheriting AppCompat 22.1.1 El cuadro de diálogo colorAccent del tema de la aplicación no funciona
  • Pantalla completa en personalizar tema
  • Cambiar el color del icono de FAB basado en estado w / compat libs
  • Obtención de atributos temáticos de los estilos de Android incorporados
  • ¿Puedo cambiar el color de acento (AppCompat) de forma programática?
  • ¿Por qué mi 'actionBarTabStyle' personalizado no anula el estilo / tema predeterminado?
  • Custom SearchView todo se puede hacer clic en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.