Sto chiamando il seguente nel costruttore della mia vista personalizzata:Impostazione textSize in vista risultati personalizzati in enorme testo
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();
}
}
Si suppone per impostare il testo e la dimensione del testo per 2 campi di testo.
Ho il seguente nel mio attr.xml oltre ai formati di stringa per il contenuto del testo (che funziona bene).
<attr name="line1_textSize" format="dimension" />
<attr name="line2_textSize" format="dimension" />
Quando uso questo punto di vista e impostare la dimensione del testo utilizzando una dimensione tramite 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"
/>
il testo finisce per essere molto più grande del previsto. Sto solo impostando rispettivamente 10 e 12sp e le dimensioni del testo sono più simili a 30sp.
Qualcuno può vedere cosa sto facendo male? Devo fare qualcosa con DisplayMetrics per assicurarmi che le cose siano ridimensionate correttamente?
Edit: L'aggiunta di qualche chiarimento
La dimensione è sempre preso. Il testo cambia quando imposto le diverse dimensioni del testo usando il mio attributo personalizzato (in xml). Ho anche provato a utilizzare getDimensionPixelSize
.
È come se il calcolo/recupero della dimensione fosse errato. 1sp (o dp) modifica i risultati in un cambiamento significativo.
Per aggiungere qualche chiarimento a questo soluzione corretta, avevo bisogno di recuperare prima la dimensione in pixel e quindi impostare la dimensione del testo facendo passare l'unità/tipo di dimensione che ero passando nel secondo arg. Yeesh. – loeschg