Как заставить Android View сжимать детей - PullRequest
1 голос
/ 06 января 2011

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

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

Вот ссылка на скриншот, поскольку я не могу опубликовать изображения: image

В этой ситуации мне бы хотелось, чтобы Android уменьшал высоту всех верхних и правых карточек до тех пор, пока нижняя карточка не станет полностью видимой.Это не кажется сложным, но я не могу заставить его работать.Я создал изображение ниже, используя RelativeLayout и поместив все верхние карты рядом друг с другом, а все правильные карты - друг под другом (с верхней картой справа под верхними картами).Я попытался добавить все карты в их собственный вид, но это тоже не сработало.

Есть предложения?Спасибо!


ОК, я подошел ближе (см. Ссылку на изображение внизу), но теперь у меня возникла обратная проблема - мне нужно ее увеличить.Я считаю, что это потому, что я сократил изображения, которые я использую для костюмов.Как видите, все они уменьшены до небольшого размера.Я хотел бы иметь возможность получить LinearLayout для каждой кнопки, развернутой по горизонтали / вертикали, чтобы использовать все свободное пространство, без отрисовки последних кнопок за видимой частью LinearLayout.В идеале я мог бы добавить изображение любого размера для костюма и соответственно изменить его размер, но, боюсь, я прошу какую-то круговую логику или что-то в механизме макета.

мой файл XML.Класс HandView - это то, что содержит пять карт в каждом наборе.Эти 5 карт имеют поле в 5 пикселей.

<?xml version="1.0" encoding="utf-8"?>
<TableLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:shrinkColumns="*"
    android:background="#FF00FF00">

    <TableRow
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:background="#FF0000FF">
        <com.herscher.euchre.ui.HandView
          android:background="#FFFF0000"
            android:layout_column="1"
            android:orientation="horizontal"
            android:id="@+id/northHandView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal" />
    </TableRow>

    <TableRow
        android:layout_height="wrap_content"
        android:layout_width="wrap_content">
        <com.herscher.euchre.ui.HandView
            android:layout_column="0"
            android:orientation="vertical"
            android:id="@+id/westHandView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <com.herscher.euchre.ui.PlayArea
            android:layout_column="1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:id="@+id/playArea" />

        <com.herscher.euchre.ui.HandView
            android:layout_column="2"
            android:orientation="vertical"
            android:id="@+id/eastHandView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </TableRow>

    <TableRow
        android:layout_height="wrap_content"
        android:layout_width="wrap_content">
        <com.herscher.euchre.ui.HandView
            android:layout_column="1"
            android:orientation="horizontal"
            android:id="@+id/southHandView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </TableRow>

</TableLayout>

Новое изображение здесь

У кого-нибудь есть предложения?

1 Ответ

0 голосов
/ 06 января 2011

Возможно, вы захотите взглянуть, используя функцию веса LinearLayout, которая заставит дочерние представления увеличивать размер до доступного пространства.В вашем случае вы, вероятно, захотите, чтобы все они имели одинаковый вес.

...