gpt4 book ai didi

android - 通过 Id 获取 ImageView 后覆盖 onMeasure

转载 作者:太空狗 更新时间:2023-10-29 13:30:27 25 4
gpt4 key购买 nike

我需要通过 id 找到一个 View ,然后覆盖它的 onMeasure 方法。有人知道怎么做吗?

以下内容在 Java 中不起作用,但从概念上讲这是我需要的:

ImageView myImage = (ImageView) findViewById(R.id.some_pic);
myImage.onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int width = MeasureSpec.getSize(widthMeasureSpec);
int height = MeasureSpec.getSize(heightMeasureSpec);
showOther(width, height);
};

myImage.setImageBitmap(bmp);

Java 提供了这个

ImageView myImage = new ImageView(this) {
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int width = MeasureSpec.getSize(widthMeasureSpec);
int height = MeasureSpec.getSize(heightMeasureSpec);
showOther(width, height); }
};

或者这个

ImageView myImage. = (ImageView) findViewById(R.id.some_pic);
myImage.setImageBitmap(bmp);

我想过使用 setOnMeasureListener 但没有为 ImageView 定义这样的方法。关于如何实现这一点有什么想法吗?

最佳答案

我猜 some_pic ImageView 是在 XML 中声明的,然后膨胀了,可能是通过在您的 Activity 类中调用 setContentView。 Inflation 意味着 Android 读取 XML 并将其转换为 Java 对象。调用 setContentView 后,所有对象都会被实例化,之后再对它们的类​​进行更改(例如重写 ImageView 的 onMeasure 方法)就太晚了。

我可以想到两种选择:

  1. (首选) 创建一个扩展 ImageView 并覆盖 onMeasure 的新类。当您在 XML 中声明 some_pic 时,不要使用 ImageView 标签,而是以您的新类命名标签(完全限定名称):

    android:id="@+id/some_pic"
    ...
    />

  2. 不要在 XML 中声明 some_pic。在您的 Activity 的 onCreate 方法中,在调用 setContentView 之后,实例化一个新的 ImageView 并覆盖其 onMeasure 方法,就像您在问题的第一个 Java 选项中所做的那样。您必须手动将此 ImageView 插入到您的布局中;使用 Google 了解如何将一个 View 插入另一个 View (here's an example)。

关于android - 通过 Id 获取 ImageView 后覆盖 onMeasure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16078051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com