2013-04-24 8 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をしようとしてイムものです。

getView()内にgone属性を入れます。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"が何のために存在するか(v == ex)? –

3

できなくなりますonClickListener、それは到達可能ではありません(スクリーンスペースを消費しない場合、それをクリックすることはできません)。その下に最小限の高さのレイアウトを配置する必要があります。また、ビューlがなくなると、新しいレイアウトシェルが表示され、可視のonClickListenerを取得する必要があります。このようにして、ビューが消えた後、この新しいレイアウトはそれを元に戻すことができます。

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は私の一日の男を救った! –

関連する問題