2010-09-27 16 views

Respuesta

175

lo he hecho así:

((ViewManager)entry.getParent()).removeView(entry); 
+7

@schwiz te roban el espectáculo.buena respuesta – Sameer

+31

En los SDK más recientes es '(ViewGroup)' :) – Ron

+0

@schwiz, ¿cómo podemos restablecer los Id de la vista en este caso.Mi problema es incluso después de que termine mi actividad cada vez que se agrega la siguiente vista, la ID de la vista se incrementa.I quiero que la id de la vista se ponga por defecto en 1 cuando vuelva a esta actividad. – AndroidNewBee

19

Use ViewStub y especifique el diseño de la vista que desea alternar. Para ver :

mViewStub.setVisibility(View.VISIBLE) or mViewStub.inflate(); 

a desaparecer:

mViewStub.setVisibility(View.GONE); 
+20

Ocultar no es lo mismo que eliminar. – Darkwater

+0

Si desea ocultar/mostrar, puede usar .setVisibility (View.INVISIBLE) y .setVisibility (View.VISIBLE). Cuando la vista es invisible, el usuario no puede interactuar con ella. – dennisschagt

+0

Digamos que tengo una vista de texto con un onClickListener adjunto. Si lo hago desaparecer y luego lo toco, ¿el evento aún se disparará? – ahitt6345

18

Ésta es la mejor manera

LinearLayout lp=new LinearLayout(this); 
lp.addView(new Button(this)); 
lp.addView(new ImageButton(this)); 
//Now remove them 
lp.removeViewAt(0); // and so on 

Si tener un diseño xml, entonces no es necesario agregar dynami cally.just llamar

lp.removeViewAt(0); 
+0

¿Cuál será la diferencia en términos de rendimiento? Me refiero a la diferencia de rendimiento de agregarlos dinámicamente o ponerlos en un archivo de diseño xml estático y dejar que se infle? – zgulser

0

hola si eres nuevo en el uso androide de esta manera Aplicar el fin de que sea ido IDO es una manera, de lo contrario, controlar la vista padre, y retirar al niño del no ..... más tiene la disposición de los padres y utilizar este método una retire todos los niños parentView.remove (niño)

se recomienda usar el enfoque ha ido ...

+1

GONE ocultará efectivamente la vista pero no la eliminará del diseño – Sababado

+1

Uso simple parentView.remove (removeViewName); –

+0

Tiene razón al respecto, pero estaba tratando de insinuar que no estaba respondiendo la pregunta al proporcionar la solución "GONE". – Sababado

14

para añadir vistas a una diseño, puede usar addView mí thod de la clase ViewGroup. Por ejemplo,

TextView view = new TextView(getActivity()); 
view.setText("Hello World"); 

ViewGroup Layout = (LinearLayout) getActivity().findViewById(R.id.my_layout); 
layout.addView(view); 

También hay una serie de métodos de eliminación. Verifique la documentación de ViewGroup. Una forma fácil de quitar la vista de un diseño puede ser como,

layout.removeAllViews(); // then you will end up having a clean fresh layout 
+3

removeAllViews() es lo que estaba buscando! – Alan

+0

removeAllViews() funciona perfecto para mí, gracias. – Aspicas

7

Para cambiar la visibilidad:

predictbtn.setVisibility(View.INVISIBLE); 

Para retirar:

predictbtn.setVisibility(View.GONE); 
+0

Solucionó mi problema, más que cualquier otra respuesta. Útil si, como yo, tu fondo o algunos params evitan que la vista desaparezca por completo. – Virthuss

+1

es porque View.GONE no elimina la vista del diseño, solo lo hace invisible y no ocupa espacio para fines de diseño. – Victor

1

Gran anwser de Sameer y Abel Terefe. Sin embargo, cuando elimina una vista, en mi opción, desea eliminar una vista con cierta identificación. Aquí es cómo haces eso.

1, dar la vista un id al crearlo:

_textView.setId(index); 

2, quitar la vista con el id:

removeView(findViewById(index)); 
Cuestiones relacionadas