I wanted to separate the list items by a simple horizontal line. So I had created a custom border, which simply draws a line at the bottom of the component. This list itself did not have any background color, i wanted to show the Form behind it, so I had set the background transparency to 0 for the list.
Recently we had a change in the UI design and i needed to add a gradient. And surpise!! Background is not getting drawn. I changed the transparency, of course, changed the color using res editor, then for testing changed in the code.. no luck!
Then I started checking how a component paints its background...
Recently we had a change in the UI design and i needed to add a gradient. And surpise!! Background is not getting drawn. I changed the transparency, of course, changed the color using res editor, then for testing changed in the code.. no luck!
Then I started checking how a component paints its background...
protected void paintBackground(Graphics g) { if (isBorderPainted()) { // isBorderPainted() = getStyle().getBorder() != null; Border b = getBorder(); if (b != null && b.isBackgroundPainter()) { b.paintBorderBackground(g, this); return; } } if (getStyle().getBgPainter() != null) { getStyle().getBgPainter().paint(g, bounds); } }
Ok!! As you can see, if there is a border, border is responsible to paint the background (so that it can take care of rounded corners etc nicely?). And obviously i didnt notice that when I was implementing that simple line border.
I quickly fixed my problem by changing the ListMod class (overridden from LWUIT list)
class ListMod extends List { /** * Normally when there is border, background painting is done by border. * This flag is used to override that default behavorio. False means background is painted by Style, rather than by Border. */ private boolean paintBackgroundByBorder = false; protected void paintBackground(Graphics g) { if (paintBackgroundByBorder) { super.paintBackground(g); } else { if (getStyle().getBgPainter() != null) { getStyle().getBgPainter().paint(g, getBounds()); } } }
No comments:
Post a Comment