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);
}