¿Cómo ajustar automáticamente el tamaño de fuente en la barra de acción spinner basado en la orientación?

Quería colocar un spinner en la barra de acción, al igual que en la aplicación de Gmail. Así que he creado el siguiente diseño.

<?xml version="1.0" encoding="utf-8" ?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/spinner_list_item_selected_header" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:textStyle="bold" android:gravity="center" android:text="Sales" /> <TextView android:id="@+id/spinner_list_item_selected_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:textStyle="bold" android:gravity="center" android:text="" /> </LinearLayout> 

Esta ruleta se carga a continuación en la barra de título con el siguiente código:

 getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); getActionBar().setListNavigationCallbacks(mSpinnerAdapter, mOnNavigationListener); 

Funciona como se esperaba, excepto que en el modo de paisaje, el texto no encaja. En la aplicación de Gmail, el tamaño de la fuente se reduce. ¿Hay una manera de ajustar automáticamente el tamaño de fuente basado en la orientación?

Retrato de Gmail

Paisaje de Gmail

Mi retrato

Mi paisaje

// necesitas usar dimens.xml en la carpeta de valores

 <!-- Text size for action bar titles --> <dimen name="action_bar_title_text_size">18dp</dimen> <!-- Text size for action bar subtitles --> <dimen name="action_bar_subtitle_text_size">14dp</dimen> <!-- Top margin for action bar subtitles --> <dimen name="action_bar_subtitle_top_margin">-3dp</dimen> <!-- Bottom margin for action bar subtitles --> <dimen name="action_bar_subtitle_bottom_margin">5dip</dimen> 

Crear una carpeta más con valores-tierra

En ese dimens.xml

  <!-- Text size for action bar titles --> <dimen name="action_bar_title_text_size">16dp</dimen> <!-- Text size for action bar subtitles --> <dimen name="action_bar_subtitle_text_size">12dp</dimen> <!-- Top margin for action bar subtitles --> <dimen name="action_bar_subtitle_top_margin">-2dp</dimen> <!-- Bottom margin for action bar subtitles --> <dimen name="action_bar_subtitle_bottom_margin">4dip</dimen> 

Ref: vaya a su /<android-sdk>/platforms/android-15/data/res aquí puede encontrar esto.

Lo mejor es saber la orientación del dispositivo cuando se inicia la actividad y utilizar un diseño en función de ello.

Si el retrato setContentView (R.layout.layout_with_bigfont);

Si lanscape setContentView (R.layout.layout_with_smallfont);

De lo contrario, debe configurar la fuente para esa vista (en este caso TextView) de forma dinámica utilizando setTextSize (xdp) en lugar de utilizar 2 diseños diferentes para orientaciones diferentes

  • Dos diseños diferentes para una actividad
  • GetMeasuredHeight () y el ancho que devuelve 0 después de measure ()
  • Altura de la vista de notificación de estado personalizado de Android
  • ¿Cómo obtenerContentHeight cuando se utiliza loadData?
  • LayoutManager para RecyclerView para establecer el número de columnas automáticamente según el ancho de los elementos
  • GridView o TableLayout?
  • Leer el tamaño de diseño al inicio de la aplicación
  • ¿Cómo configurar ProgressBar en la pantalla central en el diseño del marco?
  • CoordinatorLayout + AppBarLayout + NavigationDrawer
  • No se agrega el archivo de diseño xml de Android a R.java
  • Android - ¿Cómo puedo utilizar el "android: layoutDirection"?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.