Программно связать позицию RelativeLayout с другими, уже определенными в xml - PullRequest
1 голос
/ 23 января 2012

В моем XML у меня есть:

<RelativeLayout
    android:id="@+id/mainWeek"
    android:layout_height="387dip"
    android:layout_width="match_parent"
    android:layout_marginTop="5dip">
    <RelativeLayout
        android:id="@+id/day1"
        android:layout_marginTop="5dip"
        android:layout_marginLeft="5dip"
        android:layout_marginRight="5dip"
        android:layout_height="50dip"
        android:layout_width="match_parent">
        ...
    </RelativeLayout>
</RelativeLayout>

в коде я хочу что-то вроде:

    RelativeLayout layout = new RelativeLayout(this);
    RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    rlp.addRule(RelativeLayout.BELOW, R.id.day1);
    rlp.addRule(RelativeLayout.ALIGN_LEFT, R.id.day1);

    TextView tv1 = new TextView(this);
    tv1.setText("A");
    layout.addView(tv1);

    this.addContentView(layout, rlp);

но «layout» и его «tv1» появляются в верхней части экрана, а не под «day1». Что я делаю неправильно? Спасибо

1 Ответ

0 голосов
/ 23 января 2012

Возможно, вы действительно хотите добавить представление layout к RelativeLayout, идентифицированному идентификатором mainWeek:

RelativeLayout mainWeek = (RelativeLayout) findViewById(R.id.mainWeek);
//Build the layout view object

mainWeek.addView(layout, rlp);

С помощью метода addContentView() (я думаю) вы добавляете вид макета непосредственно в главное окно.

...