2013-04-24 170 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 2013-04-24 11:46:40

+0

你有沒有試過這個或沒有..它的工作代碼dud – Unknown 2013-04-24 12:03:48

+0

什麼「前」代表在if(v == ex)? – 2013-04-24 12:06:38

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救了我的男人! – 2018-02-14 09:22:46

相關問題