Android - 从res / drawable onClick显示图像

时间:2013-10-02 01:30:03

标签: android

首先,我想说我一直在寻找论坛上的答案,但我发现与我想要的不匹配。基本上,我想要的是:当用户点击.xml文件中之前“指定”的图像之一时,在.xml文件上未“指定”的屏幕中心会显示一个新图像。我写了“指定”导致idk,如果这是引用它的正确方法。

编辑:以前没有必要不指定图像,我只需要为可见性设置“消失”。这段代码正是我想要的(ty人):

Main.java

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.Toast;

public class Principal extends Activity {
    ImageView cuia1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_principal);
        cuia1 = (ImageView) findViewById(R.id.cuia1);
        cuia1.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                ImageView cuia1grande = (ImageView) findViewById(R.id.cuia1grande);
                cuia1grande.setVisibility(1);
            }
        });

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.principal, menu);
        return true;
    }
}

activity.xml

    <?xml version="1.0" encoding="utf-8"?>  
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"  
android:id="@+id/relativeLayout1"  
android:layout_width="match_parent"  
android:layout_height="match_parent">  

<TableLayout
    android:id="@+id/tableLayout1"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:shrinkColumns="*"  
    android:stretchColumns="*">   

    <TableRow   
        android:id="@+id/tabelaCuias"  
        android:layout_height="wrap_content"  
        android:layout_width="match_parent"  
        android:gravity="center">    

        <TextView  
            android:id="@+id/selecionaCuia"  
            android:text="Selecione a cuia"  
            android:textStyle="bold">            
        </TextView>  

        <ImageView  
            android:id="@+id/cuia1"  
            android:src="@drawable/cuia1">            
        </ImageView>  

        <ImageView  
            android:id="@+id/cuia2"  
            android:src="@drawable/cuia2">            
        </ImageView>  

        <ImageView  
            android:id="@+id/cuia3"  
            android:src="@drawable/cuia3">            
        </ImageView>  

        <ImageView  
            android:id="@+id/cuia4"  
            android:src="@drawable/cuia4">            
        </ImageView>                         
    </TableRow>  
</TableLayout>

<ImageView  
    android:layout_height="wrap_content"  
    android:layout_width="match_parent"
    android:layout_centerInParent="true"
    android:visibility="gone"
    android:id="@+id/cuia1grande"  
    android:src="@drawable/cuia1grande">            
</ImageView>

2 个答案:

答案 0 :(得分:0)

您是否有任何理由不想在布局文件中“指定”图像?您可以将它放在那里而不显示它(visibilty="gone"),然后在您认为合适时显示/隐藏它。

这就是我要做的事情:

  1. 将您的布局设为RelativeLayout而不是TableLayout(这样可以更轻松地在中心显示图像)

  2. TableLayout放入包裹RelativeLayout

  3. ImageView定义为包裹RelativeLayout中的最后一个子项,设置centerInParent="true"visibilty="gone"

  4. onClick方法中,只需将其visibility设为visible

  5. 如果您真的不想在布局中定义ImageView,那么您可以通过编程方式创建它:

    1. 按照与之前相同的步骤1-2

    2. 在代码

    3. 中捕获对包装RelativeLayout的引用
    4. onClick方法中,以编程方式创建ImageView,通过代码指定centerInParent="true"(如果您需要有关如何执行此操作的示例,请与我们联系。我将使用代码示例编辑答案。

    5. 通过RelativeLayout

    6. 将新视图添加到myRelativeLayout.addView(myImageView);

      希望这会有所帮助:)

答案 1 :(得分:0)

public class Principal extends Activity {
    ImageView cuia1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_principal);
        cuia1 = (ImageView) findViewById(R.id.cuia1);
        //set invisible
        cuia1 .setVisibility(View.INVISIBLE);
        cuia1.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                //show image on the center of screen  
                //set image
                cuia1.setImageResource(R.drawable.cuia1);
                // set visible
                cuia1 .setVisibility(View.VISIBLE);
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {     
        getMenuInflater().inflate(R.menu.principal, menu);
        return true;
    }
}

导入import android.view.View;

Cheerz!