Ho creato il mio componente personalizzato inserendo solo alcune Immagini di testo. Ora voglio essere in grado di init il mio controllo personalizzato direttamente dal codice, passando dimensione del testo in modo indipendente per ciascuno dei dei TV definizioneCome leggere l'attributo di dimensione personalizzato dal codice java
miei attributi:
<resources>
<declare-styleable name="BasicGauge">
<attr name="valueTextSize" format="dimension" />
<attr name="titleTextSize" format="dimension" />
<attr name="unitsTextSize" format="dimension" />
</declare-styleable>
</resources>
inizializzazione Esempio di componente:
<pl.com.digita.BikeComputerUi.customviews.BasicGauge
android:id="@+id/basicGauge1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:padding="10dp"
valueTextSize="40sp">
</pl.com.digita.BikeComputerUi.customviews.BasicGauge>
Come provo a leggere quegli attributi nel costruttore del componente:
final int N = typedArray.getIndexCount();
for (int i = 0; i < N; i++) {
int attribute = typedArray.getIndex(i);
switch (attribute) {
case R.styleable.BasicGauge_valueTextSize:
valueTextSize = typedArray.getString(attribute);
break;
case R.styleable.BasicGauge_titleTextSize:
titleTextSize = typedArray.getString(attribute);
break;
case R.styleable.BasicGauge_unitsTextSize:
unitsTextSize = typedArray.getString(attribute);
break;
}
typedArray.recycle();
}
Problema: Dopo la creazione, tutti i miei valori sono ancora nulli. 40sp è esattamente il mio valore desiderato.
prima di tutto, grazie per aver risolto il mio problema. Qual è il modo migliore per passare il valore della quota a TextView all'interno del componente composto? – piotrpo
Il modo in cui lo fai: usa un attributo personalizzato, recuperalo durante la costruzione della vista composta, quindi passa alle viste quando viene creato o gonfiato. – Snicolas