2011-06-09 12 views
5

De acuerdo. Así que empiezo mi actividad en Main, tomo FragmentManager y creo un Fragmento que necesita devolver una Vista. DE ACUERDO. Así que extendí LinearLayout para tener algo que devolver. Mi Actividad y Fragmento son felices pero yo no.Al ampliar vistas lineales de LinearLayout no son visibles

Tres LinearLayouts que creo en el Grupo de Vista principal están allí (código debajo). Lo he verificado contando niños y estableciendo los colores de fondo para contrastarlos. El padre también cambia de tamaño según la altura que tenga para los hijos (cuando no declaro ningún LayoutParams en el padre).

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 

} 

} 

Nada es nulo, todos mis elementos (3 y 2 ViewGroups Visto) están presentes en el árbol pero no es visible. Intenté llevar a los niños al frente a través del padre y los hijos, creándolos en diferentes supermétodos e invalidando la vista de manera similar. ¿Que esta pasando? ¿Es tan simple como no tener idea de lo que estoy haciendo?

Respuesta

3

El problema es simplemente porque está anulando en Layout y no haciendo nada con él. Solo debe sobrescribir esto si desea diseñar los elementos usted mismo (es decir, estaba diseñando un diseño personalizado único). En este caso, simplemente elimine ese método o llame a super.onLayout.

+0

Wow ... en algún momento estaba extendiendo algo que requería que se anulara. Muchas gracias. – Chaos

Cuestiones relacionadas