Autore Topic: Cambiare sfondo  (Letto 899 volte)

Offline Christian Giupponi

  • Utente junior
  • **
  • Post: 128
  • Respect: 0
    • Google+
    • http://it.linkedin.com/pub/christian-giupponi/29/628/810
    • ultimoprofeta
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Play Store ID:
    ItalianDevTeam
  • Sistema operativo:
    Mac OSX Lion
Cambiare sfondo
« il: 25 Settembre 2010, 11:31:00 CEST »
0
Ciao,
con un amico sto sviluppando una semplice app che deve fornire il codice html del colore selezionato.
Per ora abbiamo creato un elenco con i vari codici dei colori e li mostriamo attraverso un arrayAdapter:


Codice (Java): [Seleziona]
 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ListView listView = (ListView) findViewById(R.id.arrayList);
        String[] arrayData = getResources().getStringArray(R.array.list_array);
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this,R.layout.row,R.id.rowText,arrayData);
        listView.setAdapter(arrayAdapter);

layout/main.xml
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:background="@color/background">
   
<TextView
        android:id="@+id/codice"
        android:layout_width="fill_parent"
   android:layout_height="50px"
   android:background="@color/background_codice"
       
        >
</TextView>    

<ListView
   android:id="@+id/arrayList"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >
</ListView>
</LinearLayout>

values/array.xml
Codice (XML): [Seleziona]
<resources><string-array name="list_array"><item>#000000</item>
<item>#150517</item>
<item>#250517</item>
<item>#2B1B17</item>
<item>#302217</item>
<item>#302226</item>
<item>#342826</item>
<item>#34282C</item>
<item>#382D2C</item>
<item>#3b3131</item>
<item>#3E3535</item>
<item>#413839</item>
<item>#41383C</item>
<item>#463E3F</item>
<item>#4A4344</item>
<item>#4C4646</item>
<item>#4E4848</item>
<item>#504A4B</item>
<item>#544E4F</item>
<item>#565051</item>
<item>#595454</item>
<item>#5C5858</item>
<item>#5F5A59</item>
<item>#625D5D</item>
<item>#646060</item>
<item>#666362</item>
<item>#696565</item>
<item>#6D6968</item>
<item>#6E6A6B</item>
</string-array>
</resources>

Il problema è, come faccio a fare in modo che l'elenco non visualizzi direttamente il codice del colore ma proprio il colore vero e proprio come sfondo?

Questo è quello che abbiamo ottenuto:


Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Cambiare sfondo
« Risposta #1 il: 25 Settembre 2010, 12:33:49 CEST »
0
Per i colori sarebbe opportuno usare i color drawable. Lo string array é appunto un array di stringhe. Non escludo che esista un modo da codice per fare il parse della stringa e ottenere il colore, ma non credo sia il massimo dell'ottimizzazione.
Per usare un ColorDrawable puoi definirlo in questo modo

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<resources>
        <drawable name="win_color">#00FF00</drawable>
        <drawable name="lose_color">#FF0000</drawable>
        <drawable name="tie_color">#FFFFFF</drawable>
</resources>

mettendo il file xml che contiene il codice di cui sopra, in /res/values
Ovviamente metti i colori che ti servono assegnando ad ognuno il relativo nome
Postate il LogCat LogCat LogCat LogCat LogCat

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:Cambiare sfondo
« Risposta #2 il: 25 Settembre 2010, 14:40:35 CEST »
0
Non so blackgin, in questo caso non credo sia del tutto errato inserire i colori direttamente nella string-array, altrimenti dovresti poi mapparli tutti a mano nell'array, sbaglio?

Comunque, per impostare il colore di sfondo per ogni valore della lista, credo si debba per forza ricorrere ad un custom adapter, così da poter impostare un background diverso per ogni riga.

Off-Topic:
PS
Complimenti per l'OS utilizzato xD
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !