Android, как разместить две относительные раскладки, одну слева, а другую справа экрана? - PullRequest
2 голосов
/ 14 августа 2011

В моем приложении для Android (для альбомной ориентации экрана) мне нужно разместить виджеты в двух относительных макетах: один слева и один справа (для заполнения в полный размер).

Я предпочитаю работать программно (нахожу это более гибким, чем xml).

Должен ли я лучше использовать TableLayout в качестве родительского макета для моих вложенных макетов?

Ответы [ 2 ]

11 голосов
/ 14 августа 2011

Только для двух RelativeLayouts рядом друг с другом у вас есть большой выбор, чтобы заархивировать это. Горизонтальная LinearLayout была бы самой легкой на мой взгляд.


Edit: я никогда не делаю макеты в коде, но, поскольку вы, вероятно, читали много документов с XML, вы сможете перевести этот пример. Использует распределение пространства 50/50 для обоих макетов.

<LinearLayout android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:orientation="horizontal">
    <RelativeLayout android:layout_width="0dp"
                    android:layout_height="fill_parent"
                    android:layout_weight="1" >

    </RelativeLayout>

    <RelativeLayout android:layout_width="0dp"
                    android:layout_height="fill_parent"
                    android:layout_weight="1" >

    </RelativeLayout>

</LinearLayout>

Редактировать 2:

Определенно работает, только что попробовал это:

LinearLayout layoutContainer = new LinearLayout(this);
layoutContainer.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

// Arguments here: width, height, weight
LinearLayout.LayoutParams childLp = new LinearLayout.LayoutParams(0, LayoutParams.FILL_PARENT, 1);

RelativeLayout layoutLeft = new RelativeLayout(this);
layoutContainer.addView(layoutLeft, childLp);

RelativeLayout layoutRight = new RelativeLayout(this);
layoutContainer.addView(layoutRight, childLp);
0 голосов
/ 14 августа 2011

Отвечая на мой собственный вопрос:

Метод, предложенный alextsc, не сработал, поскольку RelativeLayouts (в отличие от LinearLayouts) не имеет никакого веса.

Я решил с этим (безобразно:- () взломать:

LinearLayout layoutContainer = new LinearLayout(myActivity.this);
layoutContainer.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

int width = getWindowManager().getDefaultDisplay().getWidth() / 2;

RelativeLayout layoutLeft = new RelativeLayout(Results.this);
layoutContainer.addView(layoutLeft, width, LayoutParams.FILL_PARENT);

RelativeLayout layoutRight = new RelativeLayout(Results.this);
layoutContainer.addView(layoutRight, width, LayoutParams.FILL_PARENT);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...