0

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

编辑:之前没有必要不指定图像,我所需要的只是为可见性设置“消失”。这段代码完全按照我想要的方式工作(ty 伙计们):

主.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;
    }
}

活动.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>

4

2 回答 2

0

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

这是我要做的:

  1. 使您的布局 aRelativeLayout而不是 a TableLayout(这将使在中心显示图像更容易)

  2. 把你TableLayout的包裹在里面RelativeLayout

  3. 将 an 定义ImageView为 wrapping 中的最后一个子级RelativeLayout, set centerInParent="true"visibilty="gone"

  4. 在您的onClick方法中,只需将其设置visibilityvisible.

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

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

  2. 捕获对RelativeLayout代码中包装的引用

  3. 在该onClick方法中,以ImageView编程方式创建,centerInParent="true"通过代码指定(如果您需要有关如何执行此操作的示例,请告诉我,我将使用代码示例编辑答案)。

  4. 将新视图添加到RelativeLayout通过myRelativeLayout.addView(myImageView);

希望这可以帮助 :)

于 2013-10-02T01:55:10.887 回答
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;

干杯!

于 2013-10-02T02:38:21.970 回答