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:
- Cómo configurar el color del borde de la casilla de verificación
- Android: Añadir divisor entre los elementos de RecyclerView
- Configuración del color del encabezado de la aplicación en la vista general (aplicaciones recientes)
- Usar dimensiones en estilo personalizado
- GetSupportActionBar (). SetCustomView (vista) no llena toda la barra de acciones
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>
- Diferentes estilos de colorControlActivated en Android
- Android CollapsingToolbarLayout Título de fondo
- ¿Cómo diseñar el Overflow de Barras de Acción en dispositivos con un botón de menú de hardware?
- Android: cambia el ancho del menú de desbordamiento
- Cómo crear barra de progreso de estilo horizontal mediante programación en Android?
- Diferencia entre android: windowBackground y android: colorBackground?
- ¿Existe alguna manera de cambiar la forma en que se resalta el elemento de edición de Android EditText?
- Temas de Android - cómo establecer el estilo sólo para tipos de vista específicos
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 🙂
- Cómo obtener un contexto en un adaptador de vista de reciclador
- No se puede encontrar el dispositivo android con el comando "dispositivos adb"