Проблема LinearLayout (2 LLayout в том же XML) - PullRequest
1 голос
/ 20 июня 2011

Я пишу новые XML-файлы для разработки приложения для Android, и у меня возникли проблемы с использованием 2 linearLayour в одном и том же xml ...

У меня "Ошибка в файле XML: прерывание сборки" со следующим кодом:

        <?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">

  <TextView android:id="@+id/texte_firsttab"   
    android:layout_height="wrap_content"   
    android:layout_width="wrap_content"/>

</LinearLayout>

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="horizontal"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">


      <Button android:id="@+id/accessGraphe"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:text="test"
    android:onClick="selfDestruct" />

  <Button android:id="@+id/accessGraphe2"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:text="test2"
    android:onClick="selfDestruct" />
</LinearLayout>

Можем ли мы поместить два линейных макета в один и тот же XML-файл?

Ответы [ 4 ]

1 голос
/ 20 июня 2011

Да, вы можете.Но не два на верхнем уровне.
См. Этот пример: http://developer.android.com/resources/tutorials/views/hello-linearlayout.html

1 голос
/ 20 июня 2011

Нет, вы не можете .... как бы вы обратились к тому или другому из исходного кода?

Если вы хотите иметь два линейных макета одновременно (один сверху и один навнизу), то вам нужно встроить их в другой макет:

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
<LinearLayout
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:layout_weigth="1">

  <TextView android:id="@+id/texte_firsttab"   
    android:layout_height="wrap_content"   
    android:layout_width="wrap_content"/>

</LinearLayout>

<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="horizontal"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
    android:layout_weigth="1" >


      <Button android:id="@+id/accessGraphe"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:text="test"
    android:onClick="selfDestruct" />

  <Button android:id="@+id/accessGraphe2"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:text="test2"
    android:onClick="selfDestruct" />
</LinearLayout>
</LinearLayout>
1 голос
/ 20 июня 2011

У вас не может быть двух макетов верхнего уровня. Как система узнает, как их организовать? Вам нужно заключить их в другой макет, который определяет это.

Я предполагаю, что пробелы перед тегом <?xml ... связаны с форматированием кода в вашем сообщении и отсутствуют в фактическом файле макета. Это также может вызвать проблемы.

0 голосов
/ 20 июня 2011

У вас есть два элемента корневого уровня, что не должно происходить (это не относится к файлам макета Android, вы можете иметь только один элемент документа в любом XML-файле).

Я бы не рекомендовалупаковка в LinearLayouts в другой, это слишком сложно;и, как правило, рекомендуется избегать вложенных макетов, см. эту статью об эффективных макетах.

Для TextView и двух кнопок идеально подойдет RelativeLayout .Он также более гибкий, чем LL.

...