studio programacion herramientas fundamentos con avanzado aplicaciones android android-layout android-custom-view

programacion - manual de android en pdf



ConfiguraciĆ³n de TextSize en la vista personalizada resultados en gran texto (1)

Llamo a lo siguiente en el constructor de mi vista personalizada:

private void style(Resources.Theme theme, AttributeSet attrs) { TypedArray a = theme.obtainStyledAttributes( attrs, R.styleable.StackedTextView, 0, 0); try { DebugTool.assertTrue(holdr != null, "View holder has not been properly intialized."); String line1 = a.getString(R.styleable.StackedTextView_line1); setLine1(line1); String line2 = a.getString(R.styleable.StackedTextView_line2); setLine2(line2); line1Size = a.getDimension(R.styleable.StackedTextView_line1_textSize, 20); line2Size = a.getDimension(R.styleable.StackedTextView_line2_textSize, 20); if (line1Size > 0) { holdr.textLine1.setTextSize(line1Size); } if (line2Size > 0) { holdr.textLine2.setTextSize(line2Size); } } finally { a.recycle(); } }

Se supone que debe establecer el texto y el tamaño del texto para 2 campos de texto.

Tengo lo siguiente en mi attr.xml además de los formatos de cadena para el contenido de texto (que funciona bien).

<attr name="line1_textSize" format="dimension" /> <attr name="line2_textSize" format="dimension" />

Cuando utilizo esta vista y configuro el tamaño del texto usando una dimensión a través de xml,

<com.me.app.view.component.StackedTextView android:id="@+id/overview_total_reviews" app:line1="40" app:line2="Rating" style="@style/OverviewStackedText" app:line1_textSize="10sp" app:line2_textSize="12sp" />

El texto termina siendo significativamente más grande de lo esperado. Solo estoy configurando 10 y 12sp respectivamente, y los tamaños de texto son más cercanos a como 30sp.

¿Alguien puede ver lo que estoy haciendo mal? ¿Debo hacer algo con DisplayMetrics para asegurarme de que las cosas se escalan correctamente?

Edit: Añadiendo algunas aclaraciones

La dimensión se está recogiendo. El texto cambia cuando configuro los diferentes tamaños de texto usando mi atributo personalizado (en xml). También he intentado usar getDimensionPixelSize .

Es como si el cálculo / recuperación de dimensión es incorrecto. El cambio en 1sp (o dp) resulta en un cambio significativo.


Intente lo siguiente en su lugar:

line1Size = a.getDimensionPixelSize(R.styleable.StackedTextView_line1_textSize, 0); line2Size = a.getDimensionPixelSize(R.styleable.StackedTextView_line2_textSize, 0); if (line1Size > 0) { holdr.textLine1.setTextSize(TypedValue.COMPLEX_UNIT_PX, line1Size); } if (line2Size > 0) { holdr.textLine2.setTextSize(TypedValue.COMPLEX_UNIT_PX, line2Size); }