Android Linear Layout вызывает у меня головную боль - PullRequest
0 голосов
/ 04 декабря 2011

У меня есть следующий XML-файл:

  <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLayout1"
    android:background="@android:color/transparent"
    android:layout_marginTop="0px"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:weightSum="1"
    android:orientation="horizontal">
      <Button android:id="@+id/info"   android:text="Info" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom"></Button>
      <Button android:id="@+id/town"   android:text="Town" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom"></Button>
      <Button android:id="@+id/unit"   android:text="Unit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom"></Button>
      <Button android:layout_height="wrap_content" android:text="EndTurn" android:id="@+id/endturn" android:layout_width="wrap_content" android:layout_gravity="bottom"></Button>
  </LinearLayout>

, который дает следующий результат: http://i42.tinypic.com/otdkb4.png

Теперь у меня есть несколько вопросов по этому поводу:

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

  2. Есть ли способ сделать макет прозрачным? Android: фон, кажется, не тот.

  3. Между третьей и пятой кнопкой немного больше места (где должна быть четвертая кнопка). Я ловлю это в программе и устанавливаю его невидимым.

    unitButton.setVisibility (НЕЗРИМОГО); unitButton.setWidth (0);

Теперь расстояние между двумя кнопками более чем в два раза превышает нормальный диапазон (между 1 и 2). Есть идеи по этому поводу? - Хотя это небольшая проблема

Заранее спасибо.

1 Ответ

0 голосов
/ 04 декабря 2011

1: макет представлен в диалоге?Если это так, то у тебя будут головные боли.Чтобы получить больше контроля, вы должны либо создать свое собственное расширение Dialog (так как некоторые значения макета диалога жестко запрограммированы), либо отобразить свой макет другим способом (новое действие сверху или, возможно, с использованием framelayout)?

2: чтобы сделать макет прозрачным, просто не присваивайте ему атрибут background.(Хотя, если вы действительно используете диалоговое окно, диалоговое окно не является прозрачным, и это то, что вы видите. Вы также можете установить его прозрачным, установив фон на «# 00000000» (что вы и делаете).

3: Вид с видимостью «невидимый» по-прежнему измеряется, то есть его ширина / высота, а также поля и отступы отображаются в виде пустого пространства в макете. Установка видимости «ушел»вместо этого он не будет измерять, и вам также не понадобится setWidth (0). (Вы все равно можете отобразить его позже, установив его обратно в «visible»)

Редактировать: удалить неиспользуемый атрибут «weightSum»это также может быть хорошей идеей, поскольку теперь представление ожидает, что его дети будут иметь общий вес, отличный от 0.

...