0

настоящее время я использую линейную структуру макета, которая выглядит следующим образом: enter image description hereКак изменить порядок линейного размещения с весами?

Ассоциированный XML-код выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?> 
<com.handmark.pulltorefresh.library.PullToRefreshLoadMoreScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/scroll_view" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/altercolor2" 
    android:layout_gravity="top"> 


    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:baselineAligned="true"> 

     <LinearLayout 
      android:id="@+id/columnOne" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight=".53" 
      android:orientation="vertical"> 

      <include 
       android:id="@+id/first_header" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       layout="@layout/item_header" /> 

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

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_weight=".47" 
      android:orientation="vertical"> 

      <include 
       android:id="@+id/second_header" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       layout="@layout/item_header" /> 

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

      <include 
       android:id="@+id/third_header" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       layout="@layout/item_header" /> 

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

     </LinearLayout> 
    </LinearLayout> 
</com.handmark.pulltorefresh.library.PullToRefreshLoadMoreScrollView> 

Однако, я хотел бы изменить, что так, что она выглядит следующим образом: enter image description here

Есть ли способ, которым я могу изменить то же самое с linearlayout? или мне нужно использовать какую-то другую форму макета, как relativelayout. Я довольно смущен тем же. Кроме того, хотелось бы включить заголовки с контейнерами (код включения), есть ли способ, которым я могу легко достичь этого?

Спасибо!

После небольшого изменения кода у меня был небольшой успех, перемещая второй заголовок и второй макет сверху, но первый заголовок находится рядом с первым макетом, а не сверху, и тот же для третьего. Есть ли способ исправить Это? Я приложил изображение здесь: enter image description here

и код выглядит следующим образом:

<com.handmark.pulltorefresh.library.PullToRefreshLoadMoreScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/scroll_view" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/altercolor2" 
    android:layout_gravity="top"> 


    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:baselineAligned="true"> 

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

      <include 
       android:id="@+id/second_header" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       layout="@layout/item_header" /> 

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

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" 
      android:baselineAligned="true"> 

      <include 
       android:id="@+id/first_header" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="0.50" 
       layout="@layout/item_dashboard_header" /> 

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

      <include 
       android:id="@+id/third_header" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="0.50" 
       layout="@layout/item_dashboard_header" /> 

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

     </LinearLayout> 
    </LinearLayout> 
</com.handmark.pulltorefresh.library.PullToRefreshLoadMoreScrollView> 

ответ

1

Что-то вроде этого должно приблизить вас к тому, что вы хотите. Используйте ту же сумму weight для двух View s, чтобы заняться равным объемом пространства. Это явно псевдокод для layout, потому что кажется, что вы знаете свойства.

<LinearLayout 
    android:orientation="vertical" 
    ...> 
    <SecondView 
     width="match_parent" 
     height="wrap_content" 
     .../> 
    <LinearLayout 
     width="match_parent" 
     height="wrap_content" 
     ...> 
     <LinearLayout 
      width="0dp" 
      height="wrap_content" 
      layout_weight="1" 
      orientation="vertical"> 
     <include 
      android:id="@+id/first_header" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.50" 
      layout="@layout/item_dashboard_header" /> 

     <LinearLayout 
      android:id="@+id/first_container" 
      android:layout_width="match_parent" 
      android:layout_weight="0.50" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      /> 
    </LinearLayout> 
     <LinearLayout 
      width="0dp" 
      height="wrap_content" 
      layout_weight="1" 
      orientation="vertical"> 
     <include 
      android:id="@+id/third_header" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.50" 
      layout="@layout/item_dashboard_header" /> 

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

При использовании weight в горизонтальном LinearLayout вашего width должен быть «0dp» и в вертикальном LinearLayout Вашего height должна быть «0dp».

Теперь оберните эти

<include 
      android:id="@+id/first_header" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.50" 
      layout="@layout/item_dashboard_header" /> 

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

в вертикальном LinearLayout, как я выше с ThirdView и FirstView. В любом порядке, в котором они вам нужны.

+0

Невозможно установить его таким образом, поскольку он показывает только первый контейнер, когда я делаю это таким образом. Можете ли вы проиллюстрировать с помощью res pect к моему коду для требуемого макета, так что второй сверху, первый и третий вместе с картиной i, также не уверен, что мне нужно как-то заменить эти линейные прогибы внутри линейных прогибов, я добавил linearlayouts вместо любого малыша из представлений внутри parent linearlayouts, как в коде –

+0

Я думаю, я не понимаю. См. Мое редактирование. Возможно, это то, что вы имеете в виду. Я не обращал внимания на то, где каждый номер был, когда я впервые написал код – codeMagic

+0

. Я немного путаюсь с линейными макетами, содержащимися в других линейных макетах, вместо представлений, которые вы проиллюстрировали в коде. Также, установка ширины или высоты до 0dp делает этот конкретный макет невидимым в моем случае. Есть ли способ, которым вы можете использовать мой код (с точными макетами и включенными заголовками, как показано), и объяснить свой ответ тем же? –

0

Используйте RelativeLayout и это очень легко -

Просто используйте Android:Layout_AlignToRightOf="@id/LeftView" и Android:Layout_AlignBelow="@id/TopView" для различных точек зрения.

Ie: Ваш xmxl для второго ПОС должно быть:

 <RelativeLayout 
     android:id="@+id/Organize" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 

      <LinearLayout //or Whatever type of view you want 
      android:id="@+id/Second" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"> 
         <include.../> 
      </LinearLayout> 

        <LinearLayout //or Whatever type of view you want 
        android:id="@+id/First" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_below="@id/Second"> 
          <include.../> 
        </LinearLayout> 

        <LinearLayout //or Whatever type of view you want 
        android:id="@+id/Third" 
        androidlayout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_below="@id/Second" 
        android:layout_ToRightOf="@id/First> 
           <include.../> 
        </LinearLayout> 

    </RelativeLayout> 

В своем первом картинке, и ваш оригинальный MXML, вы создали LinearLayout и установить его на horizontal (слева направо), а затем положить второй LinearLayout после (справа). Внутри этого второго вы заполнили его двумя предметами, которые распределяются сверху вниз. Использование RelativeLayout является личным предпочтением, но оно позволяет контролировать, где вы хотите, чтобы на экране появилось нечто более прямолинейное.

+0

Я сделаю код для вашего нижнего рисунка, дайте мне минуту ... – SQLiteNoob

+0

У меня нет текстового изображения. У меня есть макеты в основной линейной компоновке, что затрудняет добавление таких отношений, как torightof и т. Д., Можете ли вы показать в отношении моего кода? –

+0

1 секунда ... RelativeView облегчает жизнь. – SQLiteNoob

Смежные вопросы