2011-07-06 26 views
5

başvurum ve her doğrusal düzeni birini Relativelayout ve bir lineer düzeni (gitti bu doğrusal düzenlerden başlangıçta görünürlüğünü) sahip olduğunu oluştuğunu biri LinearLayout sahiptir. İlgili düzeni tıklarsanız, ilgili doğrusal düzen görüntülenir. Ancak, göreceli düzeni tıkladıktan sonra tüm doğrusal düzen nasıl yenilenir.programlı

Kodu:

private OnClickListener exit2Listener = new OnClickListener() 
{ 
    public void onClick(View v) 
    { 
     if(!exit2status) 
     { 
      if(RB_Constant.upcomingexits_obj.response.size() > 1) 
      { 
      if(RB_Constant.upcomingexits_obj.response.get(1).listRestaurants.size() > 0) 
      { 
       // Create the views on the fly instead of using the ListView 
       UpcomingResultsListViewAdapter2 rbupcadapter2 = new UpcomingResultsListViewAdapter2(RB_UpcomingExits.this); 
       int numItems2 = 0; 

       if(RB_Constant.upcomingexits_obj.response.get(1).listRestaurants.size() > 0) 
       { 
        numItems2 = RB_Constant.upcomingexits_obj.response.get(1).listRestaurants.size(); 
       } 

       //linearLayout2 
       for(int position=0; position < numItems2; position++) 
       { 
        View convertview = null; 
        convertview = rbupcadapter2.getView(position, convertview, null); 
        listLayout2.addView(convertview); 
       } 
      }    
      } 
      else 
      { 
      //toastMsg("No results!"); 
      } 
      listLayout2.setVisibility(View.VISIBLE); 
      exit2status=true; 

      if(!exit1status || exit3status || exit4status || exit5status) 
      { 
      //System.out.println("exit2 GONE"); 
      listLayout1.setVisibility(View.GONE); 
      listLayout3.setVisibility(View.GONE); 
      exit1status = false; 
      exit3status = false; 

      } 

      LLExitDetails.invalidate(); 
     } 
     else 
     { 
      System.out.println("exit2 GONE"); 
      listLayout2.setVisibility(View.GONE); 
      exit2status = false; 

      LLExitDetails.invalidate(); 
     } 
    }  
}; 

cevap

5

her şeyi içerir LinearLayout alın. "Yenilemek" gerektiğinde, invalidate'u arayın. Ancak, sadece UI iş parçacığında arayın. Başka bir iş parçacığında ararsanız (bir zamanlayıcı söyleyin), postInvalidate numaralı telefonu arayın. Her ikisi de, OS'nin çalışmaya hazır olduğu zaman View'un onDraw yönteminin çağrılmasına neden olur.

+0

benim kod eklendi lütfen bulunuyor requestLayout bunu gör. Kodda "LLExitDetails" ana Doğrusal Düzen'dir. ve geçersizliği ekliyorum ama çalışmıyor. – naresh

+0

"Çalışmıyor" derken ne oluyor? – DeeV

+0

ferahlatıcı değil. invalidate dediğimde ilk lineer düzeni göstermez. – naresh

0

Bu sorunu çözmek için çok zaman harcadım. Ve Sen style.xml

<color name="transparent">#00000000</color> 

yılında Ve kodunda Şeffaf rengini ayarlamak gerekir

sadece bir geçmiş

LinearLayout ll = (LinearLayout) findViewById(R.id.noteList); 
    ll.setBackgroundColor(getResources().getColor(R.color.transparent)); 
    ll.invalidate(); 
ayarlamak için çağrı kod 3 hatlarında yenileme LinearLayout basit bir yöntem buldu

Çekilebilir bir arka plan varsa,

-2
linearLayout.removeAllViews(); 
//The again load the linearlayout view 
runLinearLayout(); 
0

grafiksel yolu kullanımı onDraw'u() ve yeniden hesaplamak görünümü boyutları için ve yüksekliği ile ilgili herhangi bir şeyi iptal bulunuyor geçersiz olarak görünümü yenilemek için, genişlik, kenar boşlukları ve dolgu kullanımı o çağrı onMeasure()