Android - 无法扩展ImageView

时间:2017-04-07 10:18:51

标签: java android android-custom-view

我只是想扩展ImageView:

import android.content.Context;
import android.util.AttributeSet;
import android.widget.ImageView;

public class SquareImageView extends ImageView {

    public SquareImageView(Context context) {
        super(context);
    }

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

    public SquareImageView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);

        int width = getMeasuredWidth();
        setMeasuredDimension(width, width);
    }

}

但Android Studio会返回编译错误:

  

此自定义视图应该扩展   而不是android.support.v7.widget.AppCompatImageView

但导入android.support.v7.widget.AppCompatImageView的{​​{1}}内容无法解决问题,因为ImageView已标记为未导入...

我在这里做错了什么?

3 个答案:

答案 0 :(得分:5)

这完全没问题

import android.content.Context;
import android.support.v7.widget.AppCompatImageView;
import android.util.AttributeSet;

public class CustomImageView extends AppCompatImageView {
    public CustomImageView(Context context) {
        super(context);
    }

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

    public CustomImageView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
}

导入AppCompatImageView时,您也必须使用它。不仅如此,在JAVA中,您导入的内容就是您使用的内容。以其他方式输入,导入您想要使用的内容

答案 1 :(得分:1)

使用AppCompat窗口小部件可让您在具有Android前Lollipop版本的设备上使用某些功能。

使用AppCompatImageViewImageView现在就可以了。

答案 2 :(得分:0)

对于那些正在寻找答案并正在使用 androidx 库的用户,这是一个更新。

是的,您仍然需要使用AppCompatImageView,但只需使用新的库即可。这是新的import语句:

import androidx.appcompat.widget.AppCompatImageView;

只需将此导入更改为此other answer即可解决问题。