Quiero que mi DatePicker y el botón para ser invisible en el principio. Y cuando yo pulse el botón mágico quiero setVisibility(Ver.Visible);

El problema aquí es cuando me setVisibility(View.GONE) o setVisibility(View.INVISIBLE) nada cambia y el componente es todavía visible.

final DatePicker dp2 = (DatePicker) findViewById(R.id.datePick2);
final Button btn2 = (Button) findViewById(R.id.btnDate2);

dp2.setVisibility(View.GONE);
dp2.setVisibility(View.INVISIBLE);
btn2.setVisibility(View.GONE);
btn2.setVisibility(View.INVISIBLE);

btn2.setOnClickListener(new View.OnClickListener() {
    public void onClick(View arg0) {
        TextView txt2 = (TextView) findViewById(R.id.txt2);
        txt2.setText("You selected " + dp2.getDayOfMonth()
            + "/" + (dp2.getMonth() + 1) + "/" + dp2.getYear());
    }
});
InformationsquelleAutor nayden | 2011-09-08

7 Comentarios

  1. 99

    Veo un par de cosas mal. Para empezar, usted no tiene su botón mágico definido y no hay ningún controlador de eventos para él.

    También que no se debe usar:

    dp2.setVisibility(View.GONE);
    dp2.setVisibility(View.INVISIBLE); 

    Utilizar sólo uno de los dos. De Android documentación:

    Vista.PASADO Este punto de vista es invisible, y no toma nada de espacio para
    propósitos de diseño.

    Vista.INVISIBLE Este punto de vista es invisible, pero todavía
    toma el espacio para propósitos de diseño.

    En tu ejemplo, va a reemplazar la View.GONE asignación con el View.INVISIBLE uno.


    Trate de sustituir:

    final DatePicker dp2 = new DatePicker(this)

    con:

    DatePicker dp2 = (DatePicker) findViewById(R.id.datePick2);  

    Análogamente para otros widgets:

        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            LinearLayout ll = new LinearLayout(this);
            ll.setOrientation(LinearLayout.VERTICAL);
    
            final DatePicker dp2 = new DatePicker(this);
            final Button btn2 = new Button(this);
            final Button magicButton = new Button(this);
            final TextView txt2 = new TextView(TestActivity.this);
    
            dp2.setVisibility(View.GONE);
            btn2.setVisibility(View.GONE);
            btn2.setText("set Date");
    
            btn2.setOnClickListener(new View.OnClickListener() {
                public void onClick(View arg0) {
                    txt2.setText("You selected "
                        + dp2.getDayOfMonth() + "/" + (dp2.getMonth() + 1) 
                        + "/" + dp2.getYear());
                }
            });
    
            magicButton.setText("Magic Button");
            magicButton.setOnClickListener(new View.OnClickListener()    
                public void onClick(View arg0) {
                    dp2.setVisibility(View.VISIBLE);
                    btn2.setVisibility(View.VISIBLE);
                }
            });
    
        ll.addView(dp2);
        ll.addView(btn2);
        ll.addView(magicButton);
        ll.addView(txt2);
    
        setContentView(ll);
    }
    • API dice que «IDO: Este punto de vista es invisible, y no toma nada de espacio para propósitos de diseño». Y «INVISIBLE: Este punto de vista es invisible, pero todavía tiene espacio para propósitos de diseño.» El uso que uno se adapte a tus necesidades.
  2. 8

    Usted puede pensar en él como un estilo CSS visibilidad & pantalla.

    <div style="visibility:visible; display:block">
        This is View.VISIBLE : Content is displayed normally.
    </div>
    
    <div style="visibility:hidden; display:block">
        This is View.INVISIBLE : Content is not displayed, but div still takes up place, but empty.
    </div>
    
    <div style="display:none">
        This is View.GONE : Container div is not shown, you can say the content is not displayed.
    </div>
  3. 6

    Primero consulte a su código:

    dp2.setVisibility(View.GONE);
    dp2.setVisibility(View.INVISIBLE);
    btn2.setVisibility(View.GONE);
    btn2.setVisibility(View.INVISIBLE);

    Aquí se establece tanto la visibilidad del mismo terreno, de manera que es el problema.
    Doy un ejemplo para que demostración de muestra

    • ArrayAdapter<Cadena> adapter7 = new ArrayAdapter<Cadena>(de la Aplicación.getContext(), android.R.diseño.simple_spinner_item, opciones()); Spinner spinnerEnd = (Spinner) findViewById(R. id.spinnerEnd); adapter7.setDropDownViewResource(android.R.diseño.simple_spinner_dropdown_item); spinnerEnd.setAdapter(adapter7); spinnerEnd.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { public void onItemSelected(AdapterView<?> adapterView, la Vista, int i, de largo l) { dp2.setVisibility(Ver.VISIBLE); btn2.setVisibility(Ver.VISIBLE);
    • el problema es de aquí. Porque van dentro de onItemSelect
    • Pruebe este Botón btn1,btn2; Spinner vuelta; btn1=(Button)findViewById(R. id.button1); spin=(Spinner)findViewById(R. id.spinner1); String[] sample11={«Muestra»,»HI»}; spin=(Spinner)findViewById(R. id.spinner1); ArrayAdapter<Cadena> adaptador = new ArrayAdapter<Cadena> (this, android.R.diseño.simple_spinner_item,sample11); la vuelta.setAdapter(adaptador); btn1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub vuelta.setVisibility(Ver.Se ha IDO); } });
  4. 4

    Hoy he tenido un escenario, donde estaba realizando acción siguiente:

    myViewGroup.setVisibility(View.GONE);

    A la derecha en el siguiente cuadro I, se realiza un if de verificación en algún otro lugar para el estado de visibilidad de la vista. Y ¿adivinen qué? La siguiente condición fue pasando:

    if(myViewGroup.getVisibility() == View.VISIBLE) {
        //this if check was fulfilled magically
    }

    La colocación de los puntos de interrupción se puede ver, que los cambios de visibilidad para GONE, pero a la derecha en el siguiente cuadro se por arte de magia se convierte en VISIBLE. Estaba tratando de entender cómo el infierno que esto podía suceder.

    Resulta que hay una animación aplicada a este punto de vista, que internamente causado la vista para cambiar la visibilidad de VISIBLE hasta terminar la animación:

    public void someFunction() {
        ...
        TransitionManager.beginDelayedTransition(myViewGroup);
        ...
    
        myViewGroup.setVisibility(View.GONE);
    }

    Si se depura, verás que myViewGroup en efecto, los cambios de su visibilidad a GONE, pero a la derecha en el siguiente cuadro se volvería a convertirse en visible a fin de que la animación se ejecute.

    Así que, si te encuentras con una situación así, asegúrese de que usted no está realizando una if de verificación en medio de la animación de la vista.

    Puede quitar todas las animaciones de la vista a través de Vista.clearAnimation().

    • Esta es la respuesta para mí ( Ver.clearAnimation()). Llame siempre a la Vista.clearAnimation() en una vista en la que desea establecer IDO cuando usted sabe que usted configurar las animaciones en él.
    • esto es realmente válida, la depuración de no arrojar ninguna luz, ya que la visibilidad era en realidad como se esperaba!
  5. 1

    Vista.PASADO Este punto de vista es invisible, y no toma nada de espacio para propósitos de diseño.

    Vista.INVISIBLE Este punto de vista es invisible, pero todavía tiene espacio para propósitos de diseño.

    dp2.setVisibility(View.GONE);
    dp2.setVisibility(View.INVISIBLE);
    btn2.setVisibility(View.GONE);
    btn2.setVisibility(View.INVISIBLE);
  6. 0

    Vista.IDO hace que la vista invisible sin la vista de espacio en el diseño.
    Vista.INVISIBLE hace que la vista invisible sigue ocupando espacio.

    Utilizó por primera vez se ha IDO y, a continuación, INVISIBLE en el mismo punto de vista.Desde entonces, el código se ejecuta de forma secuencial, primero la vista se ha IDO a continuación, es reemplazado por el INVISIBLE tipo que sigue ocupando espacio.

    Debe agregar el botón de escucha en el botón y en el interior de la onClick() el método de los puntos de vista visible. Esta debería ser la lógica de acuerdo a mí en su onCreate() método.

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_setting);
    
        final DatePicker dp2 = (DatePicker) findViewById(R.id.datePick2);
        final Button btn2 = (Button) findViewById(R.id.btnDate2);
    
        dp2.setVisibility(View.INVISIBLE);
        btn2.setVisibility(View.INVISIBLE);
    
        bt2.setOnClickListener(new View.OnCLickListener(){ 
        @Override
        public void onClick(View view)
        {
            dp2.setVisibility(View.VISIBLE);
            bt2.setVisibility(View.VISIBLE);
        }
      });
    }

    Creo que esto debería funcionar fácilmente. Espero que esto ayude.

  7. -23

    Porque se establece la visibilidad de verdadero o falso.
    trate de que
    setVisible(0) visible verdadero .
    and setVisible(4) visible a false.

    • Cómo tengo que hacerlo?
    • el texto puede ser invisible, pero el botón y datepicker no.
    • NO USO literal de los números enteros , que es un mal hábito, uso de la Vista.IDO o Vista.VISIBLE en lugar de…
    • Este no es el caso
    • nunca he visto tantas voto negativo… pobre hombre

Dejar respuesta

Please enter your comment!
Please enter your name here