2015-05-01 15 views
11

Come ho capito dalla disponibilità Android Resource types, non esiste un modo semplice per utilizzare i valori float come risorse, a meno che non si utilizzino alcuni hack come quello menzionato in here. C'è qualche convenzione o qualcosa per questo?Float Android/doppio tipo di risorsa

+0

provare a definire float o double come stringa e convertirlo in appropriato in fase di esecuzione. –

+0

Android può fornire valori di tipo Integer o Boolean come descritto, ma perché esistono valori di tipo specifici come Integer o Boolean ma non Float? qual è il motivo? – Pooya

+0

Check out: http://stackoverflow.com/questions/29967258/typedarray-is-empty-after-obtaintypedarray-call/29968037#29968037 –

risposta

14

Basta salvare il doppio come una risorsa stringa

<string name="some_decimal">0.12154646</string> 

E poi basta analizzare che nel vostro codice come questo

double some_decimal = Double.parseDouble(context.getString(R.string.some_decimal)); 

È inoltre possibile creare il proprio tipo di valori delle risorse e ottenere da ci piace questo

<item name="some_decimal" type="vals" format="float">2.0</item> 

e quindi ottenere in questo modo

012.

Ma è impossibile ottenere i duplicati come questo e inoltre penso che sia meno performante rispetto alla semplice analisi di una risorsa stringa, quindi preferisco la mia prima opzione.

+0

Attenzione! Non recuperare tali stringhe con "getResources(). GetString (R.string.YourStringTag)", questo restituirà "Experimental" come stringa. – Dexter

17

No, non esiste un tipo di risorsa diretto per float/double.

Ma sì, ci sono due hack per farlo.

1) In dimens.xml

<item name="float" type="dimen" format="float">9.52</item> 

Riferimento da Java

TypedValue typedValue = new TypedValue(); 
getResources().getValue(R.dimen.my_float_value, typedValue, true); 
float myFloatValue = typedValue.getFloat(); 

E in secondo luogo è come Bojan e Haresh suggerito, Per utilizzare il valore come stringa e analizzarlo nel codice a runtime.

Problemi correlati