向ImageView添加按钮

时间:2014-10-22 06:17:42

标签: android

在我的应用程序中,我有一个由Picasso填写的ImageView:

Picasso.with(context).load("http://example.com/logo.png").into(imageView);

这很好用。但是,我想在每个ImageView的顶角添加一个按钮。显然,这意味着制作我自己的可重用实例。

我对接近它的最佳方式感到困惑。理想情况下,我想创建一个ImageView的子类来保留上面的语法和语义。 ("这是一个ImageView 加上一点。")但是,构建这种结构所需的XML需要以RelativeLayout或FrameLayout为根,我可以&#39 ; t指向ImageView子类。

我怎样才能有效地创建这样的子类?

1 个答案:

答案 0 :(得分:1)

好的,由于ImageView不是一个视图组,你不能在imageview的子类中添加一个按钮。

我会通过创建一个视图来解决这个问题,该视图将是viewgroup ex的子类。帧/ Realtive / ETC-布局。

它将包含ImageView和Button以及方法 getImageView()。

然后你的毕加索电话会是: Picasso.with(上下文).load(" http://example.com/logo.png&#34)。到(mCustomView.getImageView());

--- ---编辑

好的因为我在我的移动写作上,我无法举一个例子。 这将为您提供可重复使用的视图,也可以通过编程方式进行膨胀。 您必须创建一个XML布局文件,以便您的自定义类充气。

public class MyCustomImageView extends FrameLayout {
    private ImageView mImageView;
    private Button mButton;
    private Context mContext;

    public MyCustomImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.mContext = context;
        LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View view = layoutInflater.inflate(R.layout.custom_imageview, this);
        mImageView = (ImageView) view.findViewById(R.id.iv_imgv);
        mButton = (Button) view.findViewById(R.id.b_btn);

        //mImageView.setOnClickListener( new OnClickListener(){...} );
        //mButton.setOnClickListener( new OnClickListener(){...} );
    }

    //Return image view for image loading etc.
    public ImageView getImageView(){
        return this.mImageView;
    }

    //Add onClickListener for the button
    public void setButtonOnClickListener(inListener){
        mButton.setOnClickListener(inListener);
    }

    //If you want you can simulate this to be an image view
    // Ex..
    public void setImageDrawable(Drawable drawable){
        iv.setImageDrawable(drawable);
    }
}

这可以从XML布局中膨胀;

    <com.example.packagename.customview.MyCustomImageView  ... />

或以编程方式;

    MyCustomImageView customview = new MyCustomImageView(context);
    custom.setImageDrawable(drawable);
    custom.setButtonOnclickListener(new OnClickListener(){...});