Android Studio - setImageDrawable 是如何工作的?

标签 android imageview

我一直在尝试自学如何使用 android studio,但遇到了障碍,这段代码有什么问题吗?它不会让我使用 draw-able 设置为图像吗?

    public void obama(){
    Switch s = (Switch)findViewById(R.id.obamaswitch);
    s.setOnClickListener(new View.OnClickListener() {
        @Override
                public void onClick(View v) {
            ImageView p = (ImageView)findViewById(R.id.obamahere);
            p.setImageDrawable(R.drawable.brock);
        }
    });
}

最佳答案

你需要知道什么是参数以及setImageDrawablesetImageResource的区别。

不同的方法需要不同的参数。我指的是不同类型 的参数。在这种情况下,setImageDrawable 需要一个 Drawable 类型的参数,但您给它的是一个 int 类型的参数。所以这就是它不起作用的原因。

不知道你知不知道。 Android 中的所有资源 ID(即 R.xxx.xxx 东西)都是整数!因此,当您在实际需要 Drawable 时尝试传递整数时,它当然会失败。

你需要的是要么

1) 找到一个接受整数作为参数的方法。或者;

2) 使用资源id获取Drawable对象。

对于1),可以使用setImageResource方法。只需将单词 Drawable 替换为 Resource 并且不要更改任何其他内容!

如果您更喜欢 2),您可以使用此方法使用资源 ID 获取可绘制对象。

Drawable myDrawable = getResources().getDrawable(<insert your id here>);

然后你可以传递myDrawable作为参数:

p.setImageDrawable(myDrawable);

关于Android Studio - setImageDrawable 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34700388/

相关文章:

android - webm 无法在 Android 上播放

android - 在 android ics 中禁用屏幕截图

android - 找不到模块 'q'

ios - 如何使照片缩放,设置纵横比然后缩放在 Swift 中留下白色区域?

xcode - 如何在  Watch 应用程序中圆化 WKInterfaceImage 的角?

android - LinearLayout ImageView 调整所有图像宽度以适合

android - 画廊中的图像未显示在 ionic 2 中的 img 标签上

不同设备的Android重复注册ID

Android - 从数据库中获取图像 url 并在 ImageView 中显示该图像

swift - 从单元格到新 View Controller 的图像传输通常会加载错误的图像,有什么方法可以解决这个问题吗?