2011-06-09 13 views
5

Tamam. Bu yüzden etkinliğimi Main'da başlatıyorum, FragmentManager'ı alıp bir View döndürmesi gereken bir Fragmenti başlatıyorum. TAMAM. Bu yüzden geri dönecek bir şey elde etmek için bir LinearLayout'u uzattım. Benim Faaliyetim ve Fragmanım mutlu ama ben değilim.LinearLayout'u Genişletirken Çocuk Görünümleri görüntülenemiyor

Üst ViewGroup'da oluşturduğum üç LinearLayouts var (aşağıdaki kod). Bunu, çocukları sayarak ve arka plan renklerini birbirleriyle karşılaştırmak için ayarlayarak doğruladım. Ebeveyn aynı zamanda çocukları ne kadar uzun yaptığımı (ebeveyne herhangi bir LayoutParams bildirmediğimde) bağlı olarak boyutu değiştirir.

public class Mainmenu extends LinearLayout { 
private ArrayList<LinearLayout> panes = new ArrayList<LinearLayout>(); 
private Context context; 
private final int 
    LEFT = 0, CENTER = 1, RIGHT = 2; 

public Mainmenu(Context c) { 
    super(c); 
    context = c; 
    setBackgroundColor(Color.WHITE); 
    setOrientation(HORIZONTAL); 
    setLayoutParams(
      new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.FILL_PARENT, 
        LinearLayout.LayoutParams.FILL_PARENT)); 


    for(int i=0;i<=RIGHT;i++){          //Create the (3) Panes 
     LinearLayout ll = new LinearLayout(context); 
     ll.setLayoutParams(
       new LinearLayout.LayoutParams(300, 
         LinearLayout.LayoutParams.FILL_PARENT)); 
     switch(i){ 
     case LEFT | RIGHT: 
      ll.setBackgroundColor(Color.DKGRAY); 
     default: 
      ll.setBackgroundColor(Color.BLACK); 
     } 
     ll.setOrientation(LinearLayout.VERTICAL); 
     ll.setVisibility(VISIBLE); 
     ll.setWillNotDraw(false); 
     panes.add(i, ll); 
     addView(ll); 
    } 

    LinearLayout.LayoutParams buttons = 
     new LinearLayout.LayoutParams(100, 50); 
    buttons.setMargins(15, 5, 5, 0); 

    TextView tv1 = new TextView(context); 
    tv1.setText("hello"); 
    tv1.setTextColor(Color.RED); 
    panes.get(LEFT).addView(tv1, buttons); 

    Button button = new Button(context); 
    button.setText("Launch Editor"); 
    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v){ 
     } 
    }); 
    panes.get(CENTER).addView(button); 
} 

@Override 
protected void onLayout(boolean changed, int l, int t, int r, int b) { 
    // TODO Auto-generated method stub 

} 

} 

Hiçbir şey boş, bütün unsurları (3 ViewGroups ve 2 Görüntüleme) ağacında mevcut fakat görünmez. Ebeveynleri ve çocukları aracılığıyla çocukları cepheye getirmeye çalıştım, onları farklı süper gruplarda oluşturdum ve görünüşü tüfeğe benzer bir şekilde değiştirdim. Neler oluyor? Ne yaptığımın hiç bir fikri olmadığı kadar basit mi?

cevap

3

Sorun, yalnızca, OnLayout'u geçersiz kılmanız ve onunla hiçbir şey yapmamanızdır. Çocukları kendiniz düzenlemek istiyorsanız (örneğin, bazı benzersiz özel düzenler tasarlıyorsanız) bunu geçersiz kılmanız gerekir. Bu durumda, sadece bu yöntemi kaldırın veya super.onLayout'u arayın.

+0

Vay ... bir noktada, geçersiz kılınması gereken bir şey uzatıyordum. Çok teşekkürler. – Chaos

İlgili konular