2011-04-18 11 views
7

He configurado un ImageView en main.xml, si quiero acceder a él desde mi clase View y hacer que sea visible = falso, ¿cómo puedo hacer esto programáticamente?Cambiar ImageView

Gracias

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    theView = new GameView(this); 
    theView.setBackgroundResource(R.layout.main); 
    setContentView(theView); 
+0

Esto no está llamando a la disposición que tengo para el main :( – user710502

Respuesta

9

Por ejemplo, en el archivo XML de diseño, hay una imageview1

<ImageView 
android:id="@+id/imageview1" 
android:layout_gravity="center" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
/> 

en su src java,

ImageView img=(ImageView)findViewById(R.id.imageview1); 
img.setVisibility(View.GONE); 
img.setVisibility(View.VISIBLE); 
img.setVisibility(View.INVISIBLE); 

puede google la diferencia entre View.Gone y View.VISIBLE

+0

Esto es genial, una última pregunta ... Estoy haciendo todo el código en la clase View, pero mi distribución correcta se muestra con setContentView (R.layout.main) pero quiero el mismo diseño para setContentVi ew (myView), ¿cómo puedo hacer esto? – user710502

+0

@ user710502 cree un archivo de diseño myView.xml en la carpeta de diseño y luego configureContentView (R.layout.myView). ¿Es esto lo que quieres? – ninikin

+0

¿Todavía llamaría a todos los elementos de mi clase myView? si hago esto? Básicamente tengo una Actividad, en la actividad que instancia y hago este vacío público en Crear (Bundle savedInstanceState) {super.onCreate (savedInstanceState); theView = new GameView (esto); theView.setBackgroundResource (R.layout.main); setContentView (theView); Pero no muestra el diseño, regresa con una pantalla negra. Si hago setContentView (R.layout.main) solo se muestra pero el evento OnTouch de myView no funcionará – user710502

1

Primero debe recuperar un enlace a este objeto de vista. De conjunto de propiedades visibilidad de este objeto para View.INVISIBLE

ImageView imageView = (ImageView)findViewById(R.id.image_view); 
imageView.setVisibility(View.INVISIBLE); 
+0

Muchas gracias – user710502

1

Utilice esta propiedad en el xml de ese Imageview

android:visibility="visible" 

y cambiar la visibilidad programáticamente como este en algún evento en particular:

image.setVisibility(ImageView.GONE) 

donde la imagen es la instancia de esa imagen recibida a través de findViewById()

+0

Excelente Lo intento – user710502

1

Supongamos que usted tiene un ImageView llamados imageView.

acceder ahora a la imageView como

imageView=(ImageView) findViewById(R.id.your_image_view); 

Ahora, cuando usted está tratando de ocultar la imageView sólo tiene que utilizar imageView.setVisibility(View.INVISIBLE);

Hope esto le ayudará a

+0

Sí, todos ustedes son geniales :) – user710502