2013-04-24 1 views
9

Я видел несколько сообщений об этом, и я понял проблему. Но как это можно обойти? У меня есть ListView с элементом, который можно развернуть, но как только представление исчезло, оно не может быть снова видимым, если только оно не имеет свободного места. Как сделать это пространство?setvisibility (view.visible) не работает после 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); 
    } 
    }); 
} 

мой 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> 

LinearLayoutandroid:id="@+id/llOpenedField" является то, что им пытаются сделать gone при старте.

Я положил атрибут gone в getView() внутри BaseAdapter.

ответ

0

попробовать это и изменить в соответствии с вашими потребностями, это не список пункт, на котором я щелкая

Сделать Линейное расположение android:visibility="gone"; сначала и сделайте это.

@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); 
     } 

обновление: - Это строки для вас .. который будет сделать правильный раскрываться и сворачиваться, и никакого свободного пространства не будет там

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

Этот код будет работать надлежащим образом на скрытии и расширять другую компоновку или просмотр после нажатия на элемент списка. – Unknown

+0

вы пробовали это или нет .. с рабочим кодом dud – Unknown

+0

что означает «ex» в if (v == ex)? –

3

Если поместить код создания элемента видимого в его onClickListener, он не будет доступен (если он не использует ни одно из экранного пространства, вы не сможете щелкнуть по нему). Вы должны поместить макет с минимальной высотой под ним, и когда ваше представление l исчезнет, ​​новая оболочка макета станет видимой, и она должна получить видимый makeClickListener. Таким образом, после того, как ваш просмотр исчезнет, ​​этот новый макет сможет вернуть его.

1

проверьте этот ответ. Этот ответ работает для меня.

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 сохранен мой день человек! –

 Смежные вопросы

  • Нет связанных вопросов^_^