Agregar elementos a un diseño relativo de forma programática
He estado buscando en todas partes una respuesta a esta pregunta. Soy nuevo en Android e intento agregar elementos a una distribución relativa de forma programática a través de java en lugar de xml. He creado una clase de prueba para probarlo, pero los elementos se mantienen apilados en lugar de formatear correctamente. Simplemente quiero un TextView bajo el otro por ahora (eventualmente usaré la izquierda y la derecha de los parámetros, pero estoy empezando simple ¿Qué me falta?
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ScrollView sv = new ScrollView(this); RelativeLayout ll = new RelativeLayout(this); ll.setId(99); sv.addView(ll); TextView tv = new TextView(this); tv.setText("txt1"); tv.setId(1); TextView tv2 = new TextView(this); tv2.setText("txt2"); tv2.setId(2); RelativeLayout.LayoutParams lay = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); lay.addRule(RelativeLayout.ALIGN_PARENT_TOP); ll.addView(tv, lay); RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); p.addRule(RelativeLayout.ALIGN_BOTTOM, tv.getId()); ll.addView(tv2, p); this.setContentView(sv);};
- Establecer parámetros en las vistas secundarias de un RelativeLayout
- diseño con botones en un círculo?
- Cómo utilizar el centro de una vista como un punto de referencia dentro de un RelativeLayout
- ImageView rellena el ancho o altura de los padres, pero mantiene la relación de aspecto
- Layout_below elemento dentro del diseño incluido
- Método Onlayout en el diseño personalizado extendiendo RelativeLayout
- CheckBox no aparece en CheckedTextView
- Disposición relativa de Android con pie de página pegajoso
- ImageView no llenará el padre
- ¿Por qué la gravedad no funciona cuando se aplica al diseño relativo?
- Adición dinámica de contenido a RelativeLayout
- Usando un RelativeLayout para dividir verticalmente dos fragmentos uniformemente
- Android - Dos botones en la misma línea que llenan todo el ancho
p.addRule(RelativeLayout.ALIGN_BOTTOM, tv.getId());
Esta línea significa que la parte inferior de tv2 está alineada con la parte inferior de la tv- en otras palabras, se cubrirán entre sí. La propiedad que desea es presumiblemente RelativeLayout.BELOW
. Sin embargo, recomiendo usar xml para esto.
Utilizar:
p.addRule(RelativeLayout.BELOW, tv.getId());
usted está faltando varias cosas, primero el ScrollView no tiene medidas, lo fijó con LayoutParams.FILL_PARENT o WRAP_CONTENT, en segundo lugar; TextView1 se pierden así TextView2, establece la posición TextView1 con lay.addRule (RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ScrollView sv = new ScrollView(this); RelativeLayout ll = new RelativeLayout(this); ll.setId(99); sv.addView(ll, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); TextView tv = new TextView(this); tv.setText("txt1"); tv.setId(1); TextView tv2 = new TextView(this); tv2.setText("txt2"); tv2.setId(2); RelativeLayout.LayoutParams lay = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); lay.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE); ll.addView(tv, lay); RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); p.addRule(RelativeLayout.ALIGN_BOTTOM, tv.getId()); ll.addView(tv2, p); this.setContentView(sv);};
- Abrir un URI de contenido de archivo de Google Drive después de usar KitKat Storage Access Framework
- Diferencias entre TextWatcher 's onTextChanged, beforeTextChanged y afterTextChanged