如何以编程方式在imageView图像下添加橙色线?

时间:2011-08-05 19:19:19

标签: android imageview layoutparams

如何在图库中显示之前在图像下添加橙色线?
我想标记图片,以便从其他所有图片中伸出。

我测试了各种LayoutParams但需要建议 请参阅解释如何仅在xml中执行此操作 这是适配器中的getView

(如果需要,可以通过工作解决方案更新)
imageViewWithLine是具有布尔值的自定义imageView 是否应该划线?

public View getView(int position, View convertView, ViewGroup parent) {

    if (convertView == null){

       BitmapFactory.Options bf = new BitmapFactory.Options();
       bf.inSampleSize = 8; 
       Bitmap bitmap = BitmapFactory.decodeFile(files.get(position).getImagePath(),bf);
       ImageViewWithLine imageViewWithLine = new ImageViewWithLine(ctx, null);
       BitmapDrawable b = new BitmapDrawable(getResources(),bitmap);
       imageViewWithLine.setLayoutParams(new Gallery.LayoutParams(80, 70));
       imageViewWithLine.setScaleType(ImageView.ScaleType.FIT_XY);
       imageViewWithLine.setBackgroundResource(GalItemBg);
       imageViewWithLine.setBackgroundDrawable(b);
       convertView = imageViewWithLine;

    }

    if(files.get(position).addLine() == true){
       ((ImageViewWithLine)convertView).setLine(true);
    }else
    ((ImageViewWithLine)convertView).setLine(false);

    return convertView;

    }
}

1 个答案:

答案 0 :(得分:2)

您可以扩展ImageView类并创建自定义视图。在自定义视图中,您可以覆盖onDraw并以此方式绘制橙色线。

<强>更新

这只是一个普通的按钮,底部有一个橙色条。尺寸不准确,但应该给你一个很好的起点。

public class ButtonWithLine extends Button {

    public ButtonWithLine(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    protected void onDraw(Canvas canvas) {
        Paint paint = new Paint();
        paint.setColor(Color.rgb(255, 125, 0));
        paint.setStyle(Paint.Style.FILL);

        float height = TypedValue.applyDimension(
            TypedValue.COMPLEX_UNIT_DIP, 10, getResources().getDisplayMetrics());

        canvas.drawRect(0, getHeight() - height, getWidth(), getHeight(), paint);

        super.onDraw(canvas);
    }
}