Pregunta

Me cuesta mucho obtener dos vistas de texto que aparezcan uno encima del otro en mi código Java. Aquí está el código con el que estoy experimentando:

/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);

        layout = new RelativeLayout(this);
        text1 = new TextView(this);
        text1.setText("1");
        text2 = new TextView(this);
        text2.setText("2");

        RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT);
        RelativeLayout.LayoutParams q = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT);

        q.addRule(RelativeLayout.BELOW, layout.getId());
        text1.setLayoutParams(q);
        layout.addView(text1);


        p.addRule(RelativeLayout.BELOW,text1.getId());
        text2.setLayoutParams(p);
        layout.addView(text2);

        setContentView(layout);
    }

Esto apila las dos vistas de texto en la misma línea, pero quiero que TextView Text2, aparezca a continuación TextView Text1, por lo que en mi aplicación quiero que aparezca lo siguiente como la salida:

1
2

He probado todo tipo de cosas con el método "Addrule", no estoy seguro de por qué esto no funciona. Quiero saber cómo hacer esto sin XML porque planeo construir una biblioteca de métodos que puedan construir un diseño que sea fácilmente ajustable mediante la edición de una matriz.

¿Fue útil?

Solución

Su TextViews no tengo una ID (por defecto, la ID es -1) ... Pon esto después de su inicialización:

text1.setId(1111); // 1111 is just an example,
text2.setId(2222); // just make sure the id are unique

Otros consejos

No creo que esté buscando diseñar la vista Text1 debajo de RelativeLAYAUT, ya que le agregó todas sus puntos de vista como niños, ¿verdad? Intente eliminar la primera regla; Esa regla está pidiendo que la vista de texto esté debajo de la misma vista en la que se encuentra.

Editar: también una ayuda está configurando explícitamente la ID de la vista con la que está presentando en relación.

Entonces aquí:

text1.setId(2);
p.addRule(RelativeLayout.BELOW,2);

Puede usar el diseño XML para esto:

En el diseño relativo, establece el primer TextView y asigna un poco de identificación de la siguiente vista de texto, podemos asignar el parámetro Android: Layout_below = "ID de la vista de texto anterior" De esta manera obtenemos la segunda vista de texto debajo de la primera vista de texto

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top