Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Tamaño de texto y diferentes tamaños de pantalla de Android

Lo sé, se discutió ya 1000 veces, pero no puedo ajustar el tamaño del texto para diferentes tamaños de pantalla. Trato de usar 'sp' como unidades de tamaño en mi estilo personalizado:

<style name="CustumButtonStyle" parent="@android:style/Widget.Button"> ... <item name="android:textSize">30sp</item> ... </style> 

En 2.7 QVGA parece bien:

  • Descargar IPA / APK de Crashlytics
  • HTC sólo Hard Crash dentro de OpenGL
  • Android 5.0 - ProgressBar no se puede mostrar sobre un botón
  • Android obtiene la imagen de la galería en ImageView
  • Cómo hacer que phonegap window.location.href no inicie Chrome en Android
  • Quitar el prefijo de URL de String (http: /, www, etc.)
  • 2.7QVGA 30sp http://u.pikucha.ru/i8CRP/1.jpeg

    Pero en 7in WSVGA se ve así:

    7in WSVGA 30sp http://u.pikucha.ru/i8CRQ/2.jpeg

    He intentado usar tanto 'sp' como 'dp' con el mismo resultado.

    ¿Podría explicar cómo hacer que estos botones se vean iguales en cualquier pantalla?

    El estilo de botón personalizado completo

     <style name="CustumButtonStyle" parent="@android:style/Widget.Button"> <item name="android:background">@drawable/custom_button</item> <item name="android:layout_width">fill_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:layout_margin">3dp</item> <item name="android:textColor">#ffffff</item> <item name="android:gravity">center</item> <item name="android:textSize">30sp</item> <item name="android:textStyle">bold</item> <item name="android:shadowColor">#000000</item> <item name="android:shadowDx">1</item> <item name="android:shadowDy">1</item> <item name="android:shadowRadius">2</item> </style> 

    Y en mi tema de aplicación tengo

     <item name="android:buttonStyle">@style/CustumButtonStyle</item> 

    Y hay mi diseño:

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/RelativeLayout1" android:layout_width="fill_parent" android:background="@drawable/grid" android:gravity="center" android:orientation="vertical" android:layout_height="fill_parent"> <Button android:id="@+id/buttonContinue" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_gravity="center" android:gravity="center" android:text="@string/continue_game" android:layout_marginTop="3dp" android:layout_marginBottom="3dp"/> <Button android:id="@+id/buttonNewGame" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/buttonContinue" android:layout_alignRight="@+id/buttonContinue" android:layout_below="@+id/buttonContinue" android:layout_gravity="center" android:gravity="center" android:text="@string/new_game" android:layout_marginTop="3dp" android:layout_marginBottom="3dp"/> <Button android:id="@+id/ButtonAbout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/buttonNewGame" android:layout_alignRight="@+id/buttonNewGame" android:layout_below="@+id/buttonNewGame" android:layout_gravity="center" android:gravity="center" android:text="@string/about" android:layout_marginTop="3dp" android:layout_marginBottom="3dp"/> 

  • Android ExoPlayer - descarga de video (no DASH / HLS) y streaming al mismo tiempo
  • ¿Qué es MediaPlayer.OnInfoListener "código 703"?
  • Integración de android ndk ndk-gdb con emacs?
  • Actualización de elementos de Android ArrayAdapter
  • Cómo utilizar D-pad navegar cambiar entre la fila de listview y sus decendants (soporte de Google-TV)
  • Recupere la respuesta http en Retrofit antes de pasarla a la actividad de llamada
  • 6 Solutions collect form web for “Tamaño de texto y diferentes tamaños de pantalla de Android”

    @forcelain Creo que usted necesita para comprobar este Google IO Pdf para el diseño . En ese pdf vaya a la página No: 77 en la cual usted encontrará cómo allí que sugiere para usar dimens.xml para diversos dispositivos de androide para el ejemplo vea abajo estructura:

     res/values/dimens.xml res/values-small/dimens.xml res/values-normal/dimens.xml res/values-large/dimens.xml res/values-xlarge/dimens.xml 

    Por ejemplo se ha utilizado por debajo de dimens.xml en valores.

     <?xml version="1.0" encoding="utf-8"?> <resources> <dimen name="text_size">18sp</dimen> </resources> 

    En la carpeta de otros valores, debe cambiar los valores del tamaño del texto.

    Nota: Según lo indicado por @espinchi, los pequeños, los normales, los grandes y los xlarge han sido obsoletos desde Android 3.2 a favor de lo siguiente:

    Declaración de diseños de Tablet para Android 3.2

    Para la primera generación de tabletas con Android 3.0, la forma correcta de declarar los diseños de tabletas era colocarlos en un directorio con el calificador de configuración xlarge (por ejemplo, res / layout-xlarge /). Con el fin de acomodar otros tipos de tabletas y tamaños de pantalla, en particular las tabletas de 7 pulgadas, Android 3.2 introduce una nueva forma de especificar recursos para tamaños de pantalla más discretos.La nueva técnica se basa en la cantidad de espacio que necesita su diseño (por ejemplo, 600dp de ancho), en lugar de tratar de adaptar su diseño a los grupos de tamaños generalizados (como grandes o xlarge).

    La razón por la que el diseño de las tabletas de 7 "es complicado cuando se usa los grupos de tamaños generalizados es que una tableta de 7" está técnicamente en el mismo grupo que un teléfono de 5 "(el grupo grande) .Si bien estos dos dispositivos son aparentemente cerca unos de otros en tamaño , La cantidad de espacio para la interfaz de usuario de una aplicación es significativamente diferente, así como el estilo de la interacción del usuario.Por lo tanto, una pantalla de 7 "y 5" no siempre debe utilizar el mismo diseño.Para que sea posible para que usted pueda proporcionar diferentes diseños para estos Dos tipos de pantallas, Android ahora le permite especificar sus recursos de diseño basados ​​en el ancho y / o la altura que está realmente disponible para el diseño de su aplicación, especificado en unidades dp.

    Por ejemplo, después de diseñar el diseño que desea utilizar para los dispositivos de estilo tableta, puede determinar que el diseño deja de funcionar bien cuando la pantalla tiene menos de 600dp de ancho. Este umbral se convierte así en el tamaño mínimo que necesita para el diseño de la tableta. Como tal, ahora puede especificar que estos recursos de diseño se deben utilizar sólo cuando hay al menos 600dp de ancho disponible para la interfaz de usuario de su aplicación.

    Debe elegir un ancho y un diseño como su tamaño mínimo o probar cuál es el ancho más pequeño que su diseño soporta una vez que se ha completado.

    Nota: Recuerde que todas las figuras utilizadas con estas nuevas API de tamaño son valores de píxeles independientes de la densidad (dp) y sus dimensiones de diseño también deben definirse siempre con unidades dp, ya que lo que importa es la cantidad de espacio de pantalla disponible después del sistema Cuentas de densidad de pantalla (en contraposición a la utilización de resolución de píxeles en bruto). Para obtener más información acerca de los píxeles independientes de la densidad, lea Términos y conceptos, anteriormente en este documento. Uso de nuevos clasificadores de tamaño

    Las diferentes configuraciones de recursos que puede especificar en función del espacio disponible para su diseño se resumen en la tabla 2. Estos nuevos calificadores le ofrecen más control sobre los tamaños de pantalla específicos que su aplicación admite, en comparación con los grupos de tamaños de pantalla tradicionales (pequeños, Grande y xlarge).

    Nota: Los tamaños que especifica utilizando estos calificadores no son los tamaños de pantalla reales. Por el contrario, los tamaños son para el ancho o la altura en unidades dp que están disponibles para la ventana de su actividad. El sistema Android podría utilizar parte de la pantalla de la interfaz de usuario del sistema (como la barra del sistema en la parte inferior de la pantalla o la barra de estado en la parte superior), por lo que es posible que parte de la pantalla no esté disponible para su diseño. Por lo tanto, los tamaños que declara deben ser específicamente sobre los tamaños necesarios para su actividad, el sistema cuenta para cualquier espacio utilizado por la interfaz de usuario del sistema al declarar cuánto espacio proporciona para su diseño. También tenga cuidado de que la Barra de Acción se considere parte del espacio de ventana de su aplicación, aunque su diseño no lo declare, por lo que reduce el espacio disponible para su diseño y debe tener en cuenta en su diseño.

    Tabla 2. Nuevos calificadores de configuración para el tamaño de la pantalla (introducidos en Android 3.2). Configuración de la pantalla Valores del clasificador Descripción smallestWidth swdp

    Ejemplos: sw600dp sw720dp

    El tamaño fundamental de una pantalla, como se indica por la dimensión más corta del área de pantalla disponible. Específicamente, la anchura más pequeña del dispositivo es la más corta de la altura y el ancho disponibles de la pantalla (también se puede considerar la "anchura más pequeña posible" para la pantalla). Puede utilizar este calificador para asegurarse de que, independientemente de la orientación actual de la pantalla, su aplicación tiene al menos dps de ancho disponible para su interfaz de usuario.

    Por ejemplo, si su diseño requiere que su dimensión más pequeña del área de pantalla sea por lo menos 600 dp en todo momento, puede utilizar este calificador para crear los recursos de diseño, res / layout-sw600dp /. El sistema utilizará estos recursos sólo cuando la dimensión más pequeña de la pantalla disponible sea al menos 600dp, independientemente de si el lado de 600dp es la altura o el ancho percibidos por el usuario. El smallestWidth es un tamaño de pantalla fijo característico del dispositivo; El smallestWidth del dispositivo no cambia cuando la orientación de la pantalla cambia.

    El tamaño más pequeño de un dispositivo tiene en cuenta las decoraciones de pantalla y la interfaz de usuario del sistema. Por ejemplo, si el dispositivo tiene algunos elementos de interfaz de usuario persistentes en la pantalla que representan el espacio a lo largo del eje de la anchura más pequeña, el sistema declara que el tamaño más pequeño es menor que el tamaño real de la pantalla, ya que éstos son píxeles de pantalla no disponibles para la interfaz de usuario.

    Esta es una alternativa a los clasificadores de tamaño de pantalla generalizado (pequeño, normal, grande, xlarge) que le permite definir un número discreto para el tamaño efectivo disponible para su interfaz de usuario. El uso de smallestWidth para determinar el tamaño general de la pantalla es útil porque el ancho suele ser el factor impulsor en el diseño de un diseño. Una interfaz de usuario a menudo se desplaza verticalmente, pero tiene limitaciones bastante duras en el espacio mínimo que necesita horizontalmente. El ancho disponible también es el factor clave para determinar si se debe usar un diseño de un solo panel para los microteléfonos o el diseño de múltiples paneles para las tabletas. Por lo tanto, probablemente se preocupan más por lo que el menor ancho posible será en cada dispositivo. Anchura de pantalla disponible wdp

    Ejemplos: w720dp w1024dp

    Especifica un ancho mínimo disponible en unidades dp en las que deben utilizarse los recursos, definidos por el valor. El valor correspondiente al ancho del sistema cambia cuando la orientación de la pantalla cambia entre horizontal y vertical para reflejar el ancho real actual disponible para la interfaz de usuario.

    Esto suele ser útil para determinar si se debe utilizar un diseño de múltiples paneles, ya que incluso en un dispositivo de tableta, a menudo no se desea el mismo diseño de múltiples paneles para la orientación vertical como lo hace para el paisaje. Por lo tanto, puede utilizar esto para especificar el ancho mínimo requerido para el diseño, en lugar de utilizar tanto el tamaño de pantalla como los calificadores de orientación juntos. Altura de pantalla disponible hdp

    Ejemplos: h720dp h1024dp etc.

    Especifica una altura mínima de la pantalla en las unidades dp en las que deben utilizarse los recursos, definidos por el valor. El valor correspondiente al sistema para la altura cambia cuando la orientación de la pantalla cambia entre horizontal y vertical para reflejar la altura actual que está disponible para su interfaz de usuario.

    Utilizar esto para definir la altura requerida por su diseño es útil de la misma manera que wdp es para definir el ancho requerido, en lugar de usar calificadores de tamaño de pantalla y orientación. Sin embargo, la mayoría de las aplicaciones no necesitarán este calificador, teniendo en cuenta que las IU suelen desplazarse verticalmente y, por lo tanto, son más flexibles con la cantidad de altura disponible, mientras que el ancho es más rígido.

    Si bien el uso de estos calificativos puede parecer más complicado que utilizar grupos de tamaño de pantalla, en realidad debería ser más sencillo una vez que determine los requisitos para su interfaz de usuario. Cuando diseña su interfaz de usuario, lo principal que probablemente le importa es el tamaño real en el que su aplicación cambia entre una interfaz de usuario de estilo de teléfono y una interfaz de usuario de tableta que utiliza varios paneles. El punto exacto de este conmutador dependerá de su diseño particular-tal vez usted necesita un ancho de 720dp para su diseño de tableta, tal vez 600dp es suficiente, o 480dp, o algún número entre estos. Usando estos calificadores en la tabla 2, usted controla el tamaño exacto al que cambia su diseño.

    Para obtener más información acerca de estos calificativos de configuración de tamaño, consulte el documento Proporcionar recursos. Ejemplos de configuración

    Para ayudarle a orientar algunos de sus diseños para diferentes tipos de dispositivos, aquí hay algunos números para anchos de pantalla típicos:

     320dp: a typical phone screen (240x320 ldpi, 320x480 mdpi, 480x800 hdpi, etc). 480dp: a tweener tablet like the Streak (480x800 mdpi). 600dp: a 7” tablet (600x1024 mdpi). 720dp: a 10” tablet (720x1280 mdpi, 800x1280 mdpi, etc). 

    Utilizando los clasificadores de tamaño de la tabla 2, su aplicación puede cambiar entre los diferentes recursos de diseño para los teléfonos y las tabletas usando cualquier número que desee para ancho y / o altura. Por ejemplo, si 600dp es el ancho disponible más pequeño compatible con el diseño de la tableta, puede proporcionar estos dos conjuntos de diseños:

    Res / layout / main_activity.xml # Para aparatos res / layout-sw600dp / main_activity.xml # Para tablets

    En este caso, el ancho más pequeño del espacio de pantalla disponible debe ser de 600dp para que se aplique el diseño de la tableta.

    Para otros casos en los que desee personalizar aún más su interfaz de usuario para diferenciar entre tamaños como tabletas de 7 "y 10", puede definir diseños adicionales de ancho más pequeño:

    Res / layout / main_activity.xml # Para los teléfonos (menos de 600dp de ancho disponible) res / layout-sw600dp / main_activity.xml # Para tablets de 7 "(600dp ancho y grande) res / layout-sw720dp / main_activity.xml

    Para las tabletas de 10 "(720dp ancho y más grande)

    Observe que los dos conjuntos anteriores de recursos de ejemplo utilizan el calificador de "ancho más pequeño", swdp, que especifica el menor de los dos lados de la pantalla, independientemente de la orientación actual del dispositivo. Por lo tanto, el uso de swdp es una forma sencilla de especificar el tamaño de pantalla general disponible para su diseño ignorando la orientación de la pantalla.

    Sin embargo, en algunos casos, lo que podría ser importante para su diseño es exactamente cuánto ancho o altura está actualmente disponible. Por ejemplo, si tiene un diseño de dos paneles con dos fragmentos uno al lado del otro, puede utilizarlo siempre que la pantalla proporcione al menos 600dp de ancho, tanto si el dispositivo está en orientación horizontal como vertical. En este caso, sus recursos podrían tener este aspecto:

    Res / layout / main_activity.xml # Para microteléfonos (ancho disponible menor que 600dp) res / layout-w600dp / main_activity.xml # Multi-panel (cualquier pantalla con 600dp de anchura disponible o más)

    Observe que el segundo conjunto utiliza el calificador de "anchura disponible", wdp. De esta manera, un dispositivo puede utilizar ambos diseños, dependiendo de la orientación de la pantalla (si el ancho disponible es al menos 600dp en una orientación y menos de 600dp en la otra orientación).

    Si la altura disponible es una preocupación para usted, entonces usted puede hacer lo mismo con el calificador hdp. O incluso combinar los calificadores wdp y hdp si necesita ser realmente específico.

    Hice lo mismo por la dimensión y la pintura algo como (con dp pero sólo para el texto y en drawText ())

    XML:

      <dimen name="text_size">30dp</dimen> 

    Código:

      Paint p =new Paint(); p.setTextSize(getResources().getDimension(R.dimen.text_Size)); 

    A veces, es mejor tener sólo tres opciones

      style="@android:style/TextAppearance.Small" 

    Utilice pequeños y grandes para diferenciarse del tamaño normal de la pantalla.

     <TextView android:id="@+id/TextViewTopBarTitle" android:layout_width="wrap_content" android:layout_height="wrap_content" style="@android:style/TextAppearance.Small"/> 

    Normalmente, no es necesario especificar nada.

     <TextView android:id="@+id/TextViewTopBarTitle" android:layout_width="wrap_content" android:layout_height="wrap_content"/> 

    Utilizando esto, puede evitar realizar pruebas y especificar dimensiones para diferentes tamaños de pantalla.

    Creo que puede archivar que por añadir múltiples recursos de diseño para cada tamaño de pantalla, ejemplo:

     res/layout/my_layout.xml // layout for normal screen size ("default") res/layout-small/my_layout.xml // layout for small screen size with small text res/layout-large/my_layout.xml // layout for large screen size with larger text res/layout-xlarge/my_layout.xml // layout for extra large screen size with even larger text res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation 

    Referencia: 1. http://developer.android.com/guide/practices/screens_support.html

    Como @espinchi mencionó desde los grupos de tamaño 3.2 (nivel 13 de API) están obsoletos. Los rangos de tamaño de pantalla son el enfoque preferido en el futuro.

    No codifique los tamaños.

    Para la flexibilidad de nuevas resoluciones de pantalla de anuncios – la mejor práctica es colocar TextView falso en el diseño para obtener el textSize:

     <TextView android:id="@+id/dummyTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="gone" android:text="TextView" /> 

    Y en su código, por ejemplo:

     TextView testTextView = (TextView) rootView.findViewById(R.id.dummyTextView); float textSize = testTextView.getTextSize(); 

    Mantenga textSize como una referencia a la que puede agregar tamaño constante o percepting (calculando).

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.