我想让一个imageView将它显示的图像更改为与我的drawables不同的图像。我发现一个尝试的所有其他方法导致应用程序崩溃。活动中有2个imageViews,我希望能够更改显示的内容,但彼此独立。我是Java脚本的新手,所以最简单和最基本的答案对我有用。
这是我的XML:
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/a"
android:contentDescription="@string/a_mode"
android:onClick="startAMode" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/p"
android:contentDescription="@string/p_mode"
android:onClick="startPMode" />
这是我当前的Java脚本:
public class SelectorActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setContentView(R.layout.activity_selector);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.selector, menu);
return true;
}
public void startAMode(View view) {
ImageView img = (ImageView) findViewById(R.id.imageView1);
img.setImageResource(R.drawable.adown);
}
}
这不起作用:
public void startAMode(View view) {
ImageView img = (ImageView) findViewById(R.id.imageView1);
img.setImageResource(R.drawable.adown);
}
答案 0 :(得分:2)
首先定义Drawable,然后在ImageView中设置它。
Drawable myDrawable = getResources().getDrawable(R.id.imageView1);
img.setImageDrawable(myDrawable);
答案 1 :(得分:1)
你的方法应该是“public void startAMode(){...}”,你需要在onCreate()上调用它,如下所示:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setContentView(R.layout.activity_selector);
startAMode();
}
答案 2 :(得分:1)
img = ( ImageView )findViewById( R.id.imageView1 );
Drawable myDrawable = getResources().getDrawable(R.drawable.imagename);
img.setImageDrawable(myDrawable);
答案 3 :(得分:0)
你用于图像src的文件夹是什么?我认为问题出在drawable文件夹中。手动创建它,无需hdpi,ldpi和其他扩展,并将图像放入其中