2013-01-16 10 views
22

In riferimento a queste domande:Come posso aggiungere l'effetto sfumatura al colore di sfondo di TextView in un controllo ListView?

Adding gradient effect to TextView in a ListView generates NPE

e

How to change color and font on ListView

Vorrei sapere come fare per impostare lo sfondo di una TextView in un ListView con effetto sfumato?

In una delle domande di cui sopra, ho finito per avere l'effetto sfumato aggiunto al testo nel TextView. E dopo aver sfogliato la seconda domanda, sembra che io possa aggiungere solo colori di sfondo fissi.

Come si aggiunge la sfumatura allo sfondo? Devo fare un CustomListAdapter?

+0

http: // StackOverflow.it/a/1683195/1339473 questo è il collegamento potrebbe essere d'aiuto – QuokMoon

+0

[Colore sfumato in Android] (http://www.singhajit.com/gradient-color-in-android/) –

risposta

59

È sufficiente creare una risorsa estraibile (vedere un esempio di seguito) e aggiungerla al layout creato per ListItem.

Il disegnabile (nei tuoi res \ cartella drawable - il nome è quello - listgrad.xml per ex) potrebbe essere simile:

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <gradient 
     android:startColor="@color/gradient_start" 
     android:endColor="@color/gradient_end" 
     android:angle="-270" /> 
</shape> 

La si dovrebbe aggiungere al layout per il vostro elemento della lista (il layout .xml si definisce per questo) come questo frammento di codice:

<TextView 
     android:id="@+id/ranking_order" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/list_grad" 
     /> 
... 
+0

Grande! Grazie. :-) –

+0

grazie, ma voglio solo il gradiente per textview non backgroud. Come posso fare? – saigopi

1

Referrals da qui: How do I create a ListView with rounded corners in Android? (l'ho trovato molto utile)

Aggiungere quanto segue in un file (ad esempio gradient.xml) e quindi inserirlo nella directory (res/drawable/gradient.xml).

<?xml version="1.0" encoding="UTF-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <gradient 
     android:startColor="#SomeGradientBeginColor" 
     android:endColor="#SomeGradientEndColor" 
     android:angle="270"/> 

    <corners 
     android:bottomRightRadius="7dp" 
     android:bottomLeftRadius="7dp" 
     android:topLeftRadius="7dp" 
     android:topRightRadius="7dp"/> 
</shape> 

Una volta che si è fatto con la creazione di questo file, è sufficiente impostare lo sfondo in uno dei seguenti modi:

tramite il codice: listView.setBackgroundResource(R.drawable.customshape);

tramite XML, basta aggiungere il seguente attributo al contenitore (es: LinearLayout o per tutti i campi):

android:background="@drawable/customshape" 
4

una volta creato un gradiente si può applicare a praticamente qualsiasi cosa lascia che sia textV isual, layout o pulsante.

Per capire come creare e utilizzare una sfumatura, fare riferimento a this link.

Per creare un gradiente è necessario aggiungerlo alla directory sotto

enter image description here

Codice in pendenza sarebbe qualcosa di simile -

<?xml version="1.0" encoding="UTF-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape> 
      <gradient 
       android:startColor="#ff2d9a59" 
       android:centerColor="#ff42959a" 
       android:endColor="#ff23729a" 
       android:angle="135"/> 
     </shape> 
    </item> 
</selector> 
Problemi correlati