2014-10-20 11 views
20

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.

risposta

32

provare la seguente invece:

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

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

Problemi correlati