6
votes

Comment cachez-vous plusieurs vues à la fois?

J'ai un relativenelayout code> vue et 3 points de vue des enfants aussi. J'essaie de les cacher tout en code en définissant la mise en page relative à invisible à l'aide de SETVISPIBILITY CODE>. La chose amusante est que lorsque j'utilise visibilité (vue.inivisible) code> Seul le premier enfant est caché, pas les deux autres. Donc, je suis un peu confus - si je fixe une vue parent sur Invisible ne devrait-il pas changer la visibilité de tous les enfants ou les laisser tous seuls?

N'hésitez pas à me signaler une page de référence qui l'explique - i Impossible de trouver quoi que ce soit. p>

mise à jour: j'ai essayé de la définir à visual.gone code>, mais la même chose se produit, sauf les deux enfants qui restent visibles avancent un peu . P>

Voici le XML pertinent: P>

    public void onClick(View v) {
        //Toggle viewing of options, using "if" in case it is set to View.GONE 
        View view = findViewById(R.id.optionsform);
        if (view.getVisibility() == View.VISIBLE) 
            view.setVisibility(View.INVISIBLE);
        else
            view.setVisibility(View.VISIBLE);
    }


4 commentaires

S'il vous plaît poster votre mise en page et votre code. La façon dont vous avez décrites est correcte, cachez la mise en page cachée tous les enfants dans des circonstances normales.


C'est vraiment étrange, je me demande si c'est quelque chose à faire avec la mise en page relative .. Pouvez-vous essayer de le modifier temporairement à linearlayout et voir si le même problème se produit


Pourriez-vous placer votre code d'activité entier ici ..


Résolu. Une désinstallation puis l'installation de l'application sur mon appareil Android a fait le tour. Je vais porter sur cela à l'avenir.


4 Réponses :


2
votes

Vous devez définir sur la page vue.gone état.


2 commentaires

il pourrait juste vouloir se cacher (invisible) ... mais la peine d'essayer


Parti ne semble pas aider - il déplace simplement les deux enfants qui restent visibles un peu plus loin dans l'écran.



3
votes

Essayez de définir les trois vues sur View.invisible CODE> ou vers VIEW.GONE CODE>.

ou P>

Vous pouvez essayer P>. >

public void onClick(View v) {
    //Toggle viewing of options, using "if" in case it is set to View.GONE 
    RelativeLayout view = (RelativeLayout) findViewById(R.id.optionsform);
    if (view.getVisibility() == View.VISIBLE) 
        view.setVisibility(View.INVISIBLE);
    else
        view.setVisibility(View.VISIBLE);
}


1 commentaires

Eh bien oui, je pourrais faire cela, mais c'est beaucoup de code redondant si cela le fait au parent devrait être suffisant. Je vais examiner lundi à nouveau en utilisant les suggestions ci-dessus.



1
votes
 <TextView
        android:id="@+id/tvdictionary"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        **android:layout_below="@+id/tvoptions"** // *should  be  android:layout_below="@id/tvoptions*
        android:layout_marginLeft="30dp"
        android:layout_marginTop="16dp"
        android:text="@string/dictionary"
        android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#f000" />



     <Spinner
            android:id="@+id/dictionary"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            **android:layout_alignTop="@+id/tvdictionary"** // *should be android:layout_alignTop="@id/tvdictionary*
            android:layout_alignParentRight="true"
            android:layout_marginTop="-10dp"
            android:layout_marginLeft="6dp"
            android:layout_toRightOf="@+id/tvdictionary"// *should be android:layout_toRightOf="@id/tvdictionary*
 />
@id is used while referencing layout id
@+id is used while creating new layout id

2 commentaires

Intéressant, ce qui précède est un code autogénéré du plugin Eclipse Adt. Je vais donner ça un aller et je reviendrai vers toi.


J'ai examiné cela et le "+" ne fait pas vraiment beaucoup de différence - il s'agit davantage des outils de vérifier que vous n'introduisez pas de fautes de frappe mais n'affecte pas la production.



-4
votes

résolu. Une désinstallation puis l'installation de l'application sur mon appareil Android a fait le tour. Je vais méfier de cela à l'avenir


1 commentaires

Commentaire Si vous avez bowvote. C'était la solution pour moi.