вот что я нашел здесь: github
немного импровизировал. Очень просто и чисто. Нет внешних файлов или методов:
public class RoundedImageView extends ImageView {
private float mCornerRadius = 10.0f;
public RoundedImageView(Context context) {
super(context);
}
public RoundedImageView(Context context, AttributeSet attributes) {
super(context, attributes);
}
@Override
protected void onDraw(Canvas canvas) {
// Round some corners betch!
Drawable myDrawable = getDrawable();
if (myDrawable!=null && myDrawable instanceof BitmapDrawable && mCornerRadius > 0) {
Paint paint = ((BitmapDrawable) myDrawable).getPaint();
final int color = 0xff000000;
Rect bitmapBounds = myDrawable.getBounds();
final RectF rectF = new RectF(bitmapBounds);
// Create an off-screen bitmap to the PorterDuff alpha blending to work right
int saveCount = canvas.saveLayer(rectF, null,
Canvas.MATRIX_SAVE_FLAG |
Canvas.CLIP_SAVE_FLAG |
Canvas.HAS_ALPHA_LAYER_SAVE_FLAG |
Canvas.FULL_COLOR_LAYER_SAVE_FLAG |
Canvas.CLIP_TO_LAYER_SAVE_FLAG);
// Resize the rounded rect we'll clip by this view's current bounds
// (super.onDraw() will do something similar with the drawable to draw)
getImageMatrix().mapRect(rectF);
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawRoundRect(rectF, mCornerRadius, mCornerRadius, paint);
Xfermode oldMode = paint.getXfermode();
// This is the paint already associated with the BitmapDrawable that super draws
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
super.onDraw(canvas);
paint.setXfermode(oldMode);
canvas.restoreToCount(saveCount);
} else {
super.onDraw(canvas);
}
}
}
Я делаю, как вы уже упомянули, и добавляю стиль к столбцу.
Однако вы всегда можете попробовать заключить все свои столбцы в РЕДАКТИРОВАТЬ: (в ответ на комментарий): если фасеты заголовка в ваших столбцах нарушаются затем вы также можете разделить их на группу столбцов. Должно работать - вам может даже не понадобиться группа столбцов в заголовке ?? Например. Вы можете использовать свойства dataTables columnClasses и rowClasses. Таким образом вы можете получить результат, который показан здесь Я сделал гибридное решение с Javascript. , а затем в Javascript (с Prototype, который включен в Richfaces) править: это добавить условный класс css with rendered: с javascript I цикл на каждом td с истекшим сроком действия класса css это просто запускает функцию, когда DOM полностью загружен. Специально для каждого столбца:
, который должен выводить
и помещать в него свой условный стиль.
<rich:dataTable>
<f:facet name="header">
<rich:columnGroup>
<rich:column>Header 1</rich:column>
<rich:column>Header 1</rich:column>
</rich:columnGroup>
</f:facet>
<rich:columnGroup>
<rich:column>Data</rich:column>
<rich:column>Data</rich:column>
</rich:columnGroup>
</rich:dataTable>
<rich:column styleClass="expired" rendered="#{documento.expired}">
<f:facet name="header">
Da evadere entro
</f:facet>
<h:outputText value="#{documento.timeAgoInWords}" />
</rich:column>
<script type="text/javascript">
function colorize() {
$$('td.expired').each(function(el) {
el.up().addClassName('expired');
});
}
Event.observe(window, 'load', function() {
colorize();
});
</script>
<rich:column styleClass="expired" rendered="#{documento.expired}">
$$ ('td.expired')
и добавление того же класса css к верхнему узлу tr с el.up ()
. Event.observe(window, 'load', function() {});
<rich:column styleClass="#{someBean.isSomething ? 'styleIfTrue' : 'styleIfFalse' }">
Похожие вопросы: