Pregunta sobre android, android-relativelayout, android-layout – ¿Cómo agregar una vista programáticamente a RelativeLayout?

56

¿Me puede dar un ejemplo muy simple de agregar la vista de niño programáticamente aRelativeLayout en una posición dada?

Por ejemplo, para reflejar el siguiente XML:

<code><?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="107dp"
    android:layout_marginTop="103dp"
    android:text="Large Text"
    android:textAppearance="?android:attr/textAppearanceLarge" />
</code>

No entiendo cómo crear un apropiadoRelativeLayout.LayoutParams ejemplo.

Tu respuesta

2   la respuesta
96

Aquí tiene un ejemplo para comenzar, complete el resto según corresponda:

<code>TextView tv = new TextView(mContext);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
    ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
params.leftMargin = 107
...
mRelativeLayout.addView(tv, params);
</code>

Los documentos para RelativeLayout.LayoutParams y los constructores sonaquí

Ah, lo siento fue pensar que el ancho y la altura deben ser valores exactos Suzan Cioc
¡Yo estaba buscando esto! Aunque parece que mi punto de vista no aplica los parámetros ... D4ddy-LiLd4rk
@SuzanCioc Ver edición arriba JRaymond
Lo siento, la misma pregunta: ¿dónde aprendiste sobreRelativeLayout.LayoutParams constructor sin unContext como primer parametro? Suzan Cioc
28

En primer lugar, debe asignarle un ID a su RelativeLayout, por ejemplo, relativeLayout1.

<code>RelativeLayout mainLayout = (RelativeLayout) findViewById(R.id.relativeLayout1);
TextView mTextView = new TextView(context);
mTextView.setText("Dynamic TextView");
mTextView.setId(111);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
params.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
mainLayout.addView(mTextView, params);
</code>
@ SiKni8 Es el id del diseño principal de TextView, un diseño relativo que ya se encuentra en el archivo xml. joao2fast4u
Que esR.id.relativeLayout1 ¿refiriéndose a? Si8
Dónde estáRelativeLayout.LayoutParams constructor descrito? No está aquideveloper.android.com/reference/android/widget/… ya que todos los prototipos tienenContext como primer parametro Suzan Cioc
Deberias revisar aquideveloper.android.com/reference/android/widget/…  Es RelativeLayout.LayoutParams (int w, int h) Onuray Şahin

Preguntas relacionadas