2012-02-27 11 views
26

devo fissare diversi pesi di layout per dispositivi dimensioni dello schermo e voglio passare i valori dal file dimens il problema è che il riferimento dal file dimens mantiene gettando erroripassando riferimento layout_weight da dimensioni (dimens)

error: Error: Integer types not allowed (at 'progress_widget_item3_weight' with value '9'). 

o

error: Error: Float types not allowed (at 'progress_widget_item3_weight' with value '9.1'). 

<dimen name="progress_widget_item3_weight">9</dimen> 

Come faccio a passare il valore dal dimens f ile per il layout_weight? Grazie

risposta

49

Invece delle dimensioni è possibile utilizzare integer per dichiarare e fare riferimento a numeri interi.

dichiarazione Esempio in integers.xml:

<resources> 
    <integer name="left">1</integer> 
    <integer name="right">2</integer> 
</resources> 

Esempio di riferimento nel layout:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <FrameLayout 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_weight="@integer/left" /> 

    <FrameLayout 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_weight="@integer/right" /> 

</LinearLayout> 
+1

noti che utilizzando valori @integer per layout_weight (che è specificato per accettare 'valori float') porterà a errori 'java.lang.NumberFormatException: Invalid float' su alcuni dispositivi come LG Optimus L1/L3, Samsung Galaxy Y/Neo e Blackberry Q10. – Nachi

3

Non penso che tu possa farlo. La documentazione nel file xml dice solo float (no dimension) a differenza dello layout_width ad esempio dove si ha dimension.

È possibile utilizzare solo un valore float con hardcoded nei vari layout dipendenti dallo schermo.

Problemi correlati