Android Studio - setImageDrawable如何工作?

Dyl*_*ite 4 android imageview

我一直在努力教自己如何使用Android工作室,但我遇到了障碍,这段代码有什么问题?它不会让我使用绘图设置为图像?

    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);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

Swe*_*per 15

你需要知道什么是参数之间的差异setImageDrawablesetImageResource.

不同方法需要不同的参数.我的意思是不同类型的参数.在这种情况下,setImageDrawable需要一个类型的参数,Drawable但你给它一个类型的参数int.所以这就是为什么它不起作用.

我不知道你是否知道这件事.R.xxx.xxxAndroid中的所有资源ID(即thingy)都是整数!因此,当您尝试在实际需要时传递整数时Drawable,它当然无法执行此操作.

你需要的是两者

1)找到一个接受整数作为参数的方法.要么;

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

对于1),您可以使用该setImageResource方法.只需替换单词Drawable,Resource不做任何改动!

如果您更喜欢2),则可以使用此方法使用资源ID获取drawable.

Drawable myDrawable = getResources().getDrawable(<insert your id here>);
Run Code Online (Sandbox Code Playgroud)

然后你可以传递myDrawable参数:

p.setImageDrawable(myDrawable);
Run Code Online (Sandbox Code Playgroud)