2010-10-29 31 views

Répondre

5

Oui, vous pouvez!

setCacheColorHint(Color.WHITE); 
+0

Merci, cela fait ce que je veux, mais il définit également la couleur d'arrière-plan lors du défilement. Y a-t-il un moyen de séparer les deux? – NotACleverMan

+2

Donnez une couleur de fond à vos cellules. –

+0

Et donnez votre listeVoir le même arrière-plan que les cellules. Évidemment ne fonctionnera pas avec des images en arrière-plan (voir la solution ci-dessous) – bernstein

14

Vous devrez créer une nouvelle classe qui étend ListView.

package com.mypackage; 

import android.content.Context; 
import android.util.AttributeSet; 
import android.widget.ListView; 

public class ColorFadeListView extends ListView 
{ 
    // fade to green by default 
    private static int mFadeColor = 0xFF00FF00; 
    public ColorFadeListView(Context context, AttributeSet attrs) 
    { 
    this(context, attrs,0); 
    } 
    public ColorFadeListView(Context context, AttributeSet attrs, int defStyle) 
    { 
    super(context,attrs,defStyle);  
    setFadingEdgeLength(30); 
    setVerticalFadingEdgeEnabled(true); 
    } 
    @Override 
    public int getSolidColor() 
    { 
    return mFadeColor; 
    } 
    public void setFadeColor(int fadeColor) 
    { 
    mFadeColor = fadeColor; 
    } 
    public int getFadeColor() 
    { 
    return mFadeColor; 
    } 
} 

Vous pouvez utiliser cette vue liste identique à une ListView normale (bien que vous devrez jeter correctement utiliser les méthodes accesseurs fadeColor). Dans votre XML, au lieu de définir un objet comme <ListView android:properties.../> définir comme <com.mypackage.ColorFadeListView android:properties.../>

+0

C'est génial. Merci de votre aide. – NotACleverMan

+0

Y a-t-il un moyen d'accomplir avec le bord fading sur la barre d'action pour le nid d'abeilles? – draksia

+1

Cela ne fonctionne pas pour moi sur un Motorola Razer (Android 2.3.5). Je reçois les zones de fondu de taille 30, mais elles sont noires. Fonctionne sur un émulateur 2.3 si et sur un HTC Desire S avec Android 2.3.5. –

0

Vous pouvez essayer (c'est un hack, je sais):

int glowDrawableId = context.getResources().getIdentifier("overscroll_glow", "drawable", "android"); 
Drawable androidGlow = context.getResources().getDrawable(glowDrawableId); 
androidGlow.setColorFilter(brandColor, PorterDuff.Mode.MULTIPLY); 

Je profitais du fait que l'effet de lueur est en fait un partage Dessiné et appliqué un filtre dessus: http://evendanan.net/android/branding/2013/12/09/branding-edge-effect/