2015-02-13 4 views
0

Я только начал работать с Android, и я слежу за видео-гидом. В видео, когда он добавляет TextView, он добавляет по вертикали ... , но для меня он добавляет каждый TextView один поверх другого .. никакого порядка. Это мой исходный код:вертикальный макет не работает

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 

     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:paddingBottom="@dimen/activity_vertical_margin" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingRight="@dimen/activity_horizontal_margin" 
     android:paddingTop="@dimen/activity_vertical_margin" 
     tools:context="com.example.thebasics.MainActivity" > 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="wassup" /> 
    <TextView 
      android:id="@+id/textView3" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentTop="true" 
      android:layout_marginLeft="20dp" 
      android:layout_marginTop="41dp" 
      android:text="@string/hello_world" /> 

    </RelativeLayout> 

Я добавил android:orientation="vertical", но это не сработало. Я не ошибаюсь. Он просто ничего не делает. Я до сих пор понимаю, что он ставит объекты один на другой.

Что мне делать, чтобы решить эту проблему? Я хочу как TextViews в вертикальном порядке. Я не мог найти ответ в другом месте, и видео-гид получил его по умолчанию, поэтому он не объясняет, что делать, если он не работает.

+0

Поскольку вы используете RelativeLayout, а не LinearLayout! 'android: orientation =" vertical "' работает только для LinearLayouts (и производных). –

+0

спасибо Der ... он не говорил об этом в путеводителе, поэтому я не заметил ... я меняю его сейчас, и он работает! –

+0

Относительная компоновка первоначально устанавливает каждый виджет в верхнем левом углу, вам нужно установить его положение вручную. И ориентация = «вертикальная» не требуется в относительной компоновке – Apurva

ответ

0

он добавляет каждый TextView один поверх другого. . Никакой какой-либо порядок

Фактический заказ. RelativeLayout помещает Views в верхнем левом столбце по умолчанию, поэтому используется по умолчанию «заказ», если хотите. Вам нужно будет использовать различные свойства макета RelativeLayout для размещения их в противном случае.

я добавил Android: ориентация = "вертикальный"

RelativeLayout не имеет свойство orientation так что это не будет иметь никакого эффекта.

что делать, чтобы решить эту проблему?

Вы можете использовать android:layout_below="@id/idOfAboveTV" но это может быть громоздким, если нет необходимости/хотите RelativeLayout по какой-то другой причине.

Вы можете изменить его на LinearLayout и поскольку LL имеет значение по умолчанию orientation из horizontal, просто добавьте android:orientation="vertical" и ваш Views будут уложены в вертикальной моде.

Примечание: если вы используете LinearLayout, то вы хотите удалить некоторые из View Params, которые RelativeLayout -специфические, такие как android:layout_alignParentTop="true"

Ссылки на полезную документацию

RelativeLayout

Relative Layout Layout Params

LinearLayout

LinearLayout Layout Params

1

В качестве корневого элемента необходимо использовать LinearLayout, а не RelativeLayout.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.thebasics.MainActivity" > 

0

android:orientation="vertical" для LinearLayouts, и вы используете RelativeLayout.

Если вы хотите, чтобы ваши TextViews один над другим, просто заменить ваши родственники по Linear и установить ориентацию в вертикальное положение, как вы делали:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.example.thebasics.MainActivity" > 

<TextView 
    android:id="@+id/textView2" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="wassup" /> 

<TextView 
    android:id="@+id/textView3" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="20dp" 
    android:layout_marginTop="41dp" 
    android:text="@string/hello_world" /> 

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