android android-styles

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



android-styles (5)

Creo que tiene que ver con algunos cambios de diseño realizados cuando gira el dispositivo, ya que parece que puede evitar el cambio de tamaño agregando algo como

android:configChanges="orientation|screenSize"

en AndroidManifest.xml para la actividad en la que se encuentra. Como siempre, android: configChanges tiene más implicaciones, por lo que debe usarse solo si realmente lo necesita :)

Estoy probando el nuevo tema Toolbar y AppCompat en Android y encontré un problema. El texto del título de mi barra de herramientas parece de tamaño normal en el modo vertical, pero se hizo bastante pequeño en el modo horizontal, 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:

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>


Estaba buscando una solución sin la barra de herramientas personalizada , pero con un estilo personalizado y este código me funcionó:

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.


Intente agregar esto a la sección de su barra de herramientas debajo de activity_main.xml.

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

También noté que estás usando la barra de acción oscura estándar, sugiero usar Tema sin barra de acción, definí 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” />


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

Barra de herramientas XML:

<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 barra de herramientas:

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


El número AOSP # 170707 se escribió sobre el cambio en el tamaño del texto para el título y los subtítulos. La respuesta del miembro del proyecto fue "Funciona según lo previsto. Idéntico al comportamiento del marco". Aunque no encuentro que cambiar el tamaño del texto sea el comportamiento predeterminado deseable, parece que los ingenieros de AppCompat tuvieron que mantener la coherencia con el comportamiento del marco (defectuoso). Luego, los desarrolladores deben anular los estilos predeterminados como se describe en la respuesta de Chilly Chan.

Adiciones a la respuesta de Chilly Chan:

1) El tamaño del texto de los subtítulos se puede controlar de 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". Use "sp" solo si desea permitir que la configuración de preferencias del usuario afecte el tamaño del título / subtítulo.