Вертикальный градиент для элемента ListFieldItem в Blackberry - PullRequest
0 голосов
/ 18 ноября 2011

Я хочу отобразить вертикальный градиент в качестве фона для строки ListField в BlackBerry. Я использовал функцию shadedFillPath для достижения этой цели, но не смог:

int[] cols = new int[]{0xFFFFFF, 0xEEEEEE,0xEEEEEE,0XDDDDDD };
int[] xInds = new int[]{0, Display.getWidth(), Display.getWidth(), 0};
int[] yInds = new int[]{focusRect.y, focusRect.y,    
this.getRowHeight()+focusRect.y,this.getRowHeight()+focusRect.y};
graphics.drawShadedFilledPath(xInds, yInds,null, cols, null);

Ответы [ 2 ]

1 голос
/ 18 ноября 2011

попробуйте

        int[] X_PTS = { 0, getPreferredWidth(),getPreferredWidth(),0};        
        int[] Y_PTS = { 0,0, getPreferredHeight(),getPreferredHeight()};        
        int[] drawColors = { Colors.CategoryFocusGradientStart, Colors.CategoryFocusGradientStart,
                             Colors.CategoryFocusGradientEnd, Colors.CategoryFocusGradientEnd };        
        try {            
            g.drawShadedFilledPath(X_PTS, Y_PTS, null, drawColors, null);        
        } catch (IllegalArgumentException e) {
            Log.Error(e,this,"Bad arguments.");
        }
0 голосов
/ 09 февраля 2012

Это не ответ @ rfsk2010, но почти (вы должны изменить 0 для y):

Into:

public void drawListRow(ListField listField, Graphics graphics,int index, int y, int width)

Сделайте это:

int[] X_PTS = { 0, getPreferredWidth(),getPreferredWidth(),0};        
int[] Y_PTS = { y, y, getPreferredHeight(),getPreferredHeight()};        
int[] drawColors = { Colors.CategoryFocusGradientStart, Colors.CategoryFocusGradientStart,
                     Colors.CategoryFocusGradientEnd, Colors.CategoryFocusGradientEnd };        
try {            
    graphics.drawShadedFilledPath(X_PTS, Y_PTS, null, drawColors, null);        
} catch (IllegalArgumentException e) {
    Log.Error(e,this,"Bad arguments.");
}
...