2013-04-24 11 views
9

Ho visto alcuni post su questo e ho capito il problema. Ma come può aggirarlo? Ho ListView con l'elemento che può essere espanso ma una volta che la vista è sparita non può essere di nuovo visibile, a meno che non abbia uno spazio libero. Come creare quello spazio?setvisibility (view.visible) non funziona dopo setvisibility (view.gone)

private void mySetOnItemListener() { 
    l.setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> arg0, View view, 
      int position, long arg3) { 
     Log.d("onItemClick","called"); 
     LinearLayout ll = (LinearLayout)view.findViewById(R.id.llOpenedField); 
     ll.setVisibility(View.VISIBLE); 
    } 
    }); 
} 

mia viewLayout

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:descendantFocusability="blocksDescendants"> 

    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     android:orientation="horizontal" 
     android:weightSum="5" > 

     <TextView 
      android:id="@+id/tv_name" 
      android:layout_width="0px" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_weight="4" 
      android:padding="7dp" 
      android:text="item" 
      android:textColor="@android:color/background_dark" 
      android:textSize="25dp" /> 
    </LinearLayout> 

     <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/llOpenedField" 
     android:layout_width="match_parent" 
     android:layout_height="50dp" 
     android:orientation="horizontal" 

     > 

     <ImageButton 
      android:id="@+id/ibInformation" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:src="@drawable/info" /> 

    </LinearLayout> 

</LinearLayout> 

il LinearLayoutandroid:id="@+id/llOpenedField" è quello che im cercando di fare gone all'avvio.

inserisco l'attributo gone nello getView() all'interno di BaseAdapter.

risposta

0

provare questo e modificare in base alle proprie esigenze, questo non è nell'elenco Elemento su cui sto cliccando

fare della struttura lineare android:visibility="gone"; prima e fai questo.

@Override 
    public void onClick(View v) 
    { 
     LinearLayout ll = (LinearLayout)findViewById(R.id.vis); 

     if(v == ex) 
     { 
      if(ll.getVisibility() == View.VISIBLE) 
       ll.setVisibility(View.GONE); 
      else 
       ll.setVisibility(View.VISIBLE); 
     } 

aggiornamento: - Queste sono le linee per te .. che renderà corretta espansione e il collasso, e nessuno spazio libero sarà lì

if(ll.getVisibility() == View.VISIBLE) 
        ll.setVisibility(View.GONE); 
       else 
        ll.setVisibility(View.VISIBLE); 
+0

questo codice funzionerà correttamente su nascondi ed espandi altro layout o vista dopo aver fatto clic sulla voce di elenco. – Unknown

+0

hai provato questo o meno ... funziona codice dud – Unknown

+0

cosa vuol dire "ex" in se (v == ex)? –

3

Se si inserisce il codice di rendere un elemento visibile nella sua onClickListener, non sarà raggiungibile (se non consuma nessuno spazio sullo schermo, non potrai fare clic su di esso). Dovresti mettere un layout con un'altezza minima al di sotto di esso, e quando la tua vista è sparita, la nuova shell di layout diventa visibile, e dovrebbe ottenere onClickListener che rende visibile. In questo modo, dopo che il tuo View sarà scomparso, questo nuovo layout sarà in grado di riportarlo indietro.

1

si prega di controllare questa risposta. Questa risposta funziona per me.

TranslateAnimation translateAnimation = new TranslateAnimation(0, 50, 0, 0); 
      int animationTime = 200; 
      translateAnimation.setDuration(animationTime); 
      translateAnimation.setFillEnabled(true); 
      translateAnimation.setFillAfter(true); 
      yourView.startAnimation(translateAnimation); 
      yourView.setVisibility(View.VISIBLE); 
+0

U salvato il mio uomo giorno! –

Problemi correlati