如图所示,每个按钮点击都有不同的图像,我不想为view1,view2,view3和view4进行不同的活动来显示图像:
问题:
我是Android应用开发的新手。我希望在不同的按钮点击时显示不同的图像,而不切换每个按钮的活动!请帮帮我..提前致谢。
答案 0 :(得分:0)
在您的activity_main.xml中(或者您是如何调用它的)只需为布局添加id:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/mainView" <!--this id-->
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
然后在您的活动中创建一个字段
Layout layout;
然后输入onCreate():
layout = (Layout) findViewById (R.id.mainView);
然后在按钮的onClick上,您可以使用以下方式更改背景:
layout.setBackground(Drawable drawable);
而不是“布局”,您可以使用您的布局。就我而言,它是“RelativeLayout”
编辑:根据您上次编辑,如果要隐藏显示图像的按钮。您可以使用片段:http://developer.android.com/guide/components/fragments.html
或者您可以使用
隐藏onClicks中的按钮yourButton.setVisibility(View.GONE);
然后在您的活动中覆盖onBackPressed()方法,如:
@Override
public void onBackPressed()
{
yourButton.setVisibility(View.VISIBLE);//for each button
super.onBackPressed();
}
当然,您需要为按钮设置字段并在onCreate()中启动它们,如上面的Layout。在这两种情况下,如果按“返回”,您将再次看到按钮。
答案 1 :(得分:0)
您可以使用intent,setOnClickListener作为按钮:
@Override
public void onClick(View v) {
int id = v.getId();
switch (id) {
case id == R.id.buttonView1:
Intent intent1 = new Intent(this, ShowImage.class);
intent.putExtra("image", R.drawable.image1);
startActivities(intent);
case id == R.id.buttonView2:
Intent intent2 = new Intent(this, ShowImage.class);
intent2.putExtra("image", R.drawable.image2);
startActivities(intent2);
}
}
在ShowImage活动中获取图片ID资源:
int image = getIntent().getIntExtra("image", R.drawable.default_image);
ImageView imageView = (ImageView) findViewById(R.id.image_view);
imageView.setImageResource(image);
在ShowImage的布局中:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/image_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher" />
</LinearLayout>