2015-06-24 4 views
0

Я создал относительную компоновку с тремя макетами внутри. первая линейная компоновка с динамически добавленным TextView второй сервировкой с динамически создаваемыми таблицами третьего Linear Layout с dyanmically созданной HREF (веб-ссылкой)Проблема перекрытия макета с динамически создаваемыми элементами в android

, но эти три макетов накладываются друг на друге, вот мой XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

<LinearLayout 
    android:id="@+id/layoutHome" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 
</LinearLayout> 

<TableLayout 
    android:id="@+id/table_main" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 
</TableLayout> 

<LinearLayout 
    android:id="@+id/layoutWSMethods" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 
</LinearLayout> 

</RelativeLayout> 

Я попытался изменить RelativeLayout с помощью FrameLayout, но также и перекрыл его.

+0

Вы можете изменить RelativeLayout (корень) для LinearLayout и присвоить одинаковый вес всем своим дочерним элементам (LinearLayout, TableLayout и LinearLayout). – mmark

ответ

1

Так, чтобы исправить это, вы должны использовать свойства RelativeLayout. Например, если вы хотите, чтобы выровнять их все под друг с другом и выровнены по правой стороне ваш код будет выглядеть следующим образом:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <LinearLayout 
     android:id="@+id/layoutHome" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:layout_alignParentRight="true"> 
    </LinearLayout> 

    <TableLayout 
     android:id="@+id/table_main" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_below="@id/layoutHome"> 
    </TableLayout> 

    <LinearLayout 
     android:id="@+id/layoutWSMethods" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:layout_alignParentRight="true" 
     android:layout_below="@id/table_main"> 
    </LinearLayout> 

</RelativeLayout> 

Свойства android:layout_alignParentRight="true" и android:layout_below="@id/layoutID" только два. Хорошее место для начала будет: https://developer.android.com/guide/topics/ui/layout/relative.html

+0

У меня есть изменение alighParentRight налево и его работа Спасибо @Pete Za – Ashok

+0

Левый верхний угол по умолчанию для выравнивания взгляда. И для вашей простой компоновки вы должны использовать LinearLayout, а RelativeLayout измеряет дважды перед рисованием. –

+0

@ThomasR. Да, вы правы на обеих учетных записях. Я не хотел предполагать, что OP хочет линейный дизайн. Проблема только упоминает, что макеты перекрываются. При относительной компоновке дети могут быть помещены влево/вправо, выше/ниже и т. Д., Что позволит решить наложение, но не обязательно будет линейным –

1

Используйте Linearlayout с вертикальной или горизонтальной ориентацией.

A Framelayout предназначен для перекрытия видов в том порядке, в котором вы их добавляете.

Для RelativeLayout это то же самое, если вы не упорядочиваете свои виды, как показано ниже или выше определенного вида. Как говорится в названии, вы организуете их в относительной манере.

+0

благодарит @Thomar R., который сейчас работает с заменой Relative Layout с линейной компоновкой. Как добавить новую строку, например, между макетами с помощью xml? Это будет большой помощью. Еще раз спасибо – Ashok

+1

Я использовал android: layout_marginBottom = "10dp", для новой линии, как вещь между макетами andit работает. – Ashok

0

Установите свойство android:layout_below каждый макет, начиная со второго, так что каждый из них помещаются под другим и не начинается с верхнего

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 

    <LinearLayout 
     android:id="@+id/layoutHome" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 
    </LinearLayout> 

    <TableLayout 
     android:id="@+id/table_main" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/layoutHome" > 
    </TableLayout> 

    <LinearLayout 
     android:id="@+id/layoutWSMethods" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:layout_below="@+id/table_main" > 
    </LinearLayout> 

    </RelativeLayout> 
Смежные вопросы