Android XML Layout - две колонки со строками и одна нижняя строка - PullRequest
2 голосов
/ 09 марта 2011

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tracker_id"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/background"
android:padding="10dp">

<!-- <ScrollView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="60dip"> -->

<LinearLayout
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:gravity="center_horizontal"
    android:background="#ffffff">
    <ImageView 
        android:id="@+id/icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="6dip"
        android:src="@drawable/ic" />
    <Button 
        android:id="@+id/stop_button"
        android:text="@string/stop"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_centerInParent="true"
        android:paddingLeft="50dp"
        android:paddingRight="50dp"
        android:enabled="true" />
    <Button 
        android:id="@+id/pause_button"
        android:text="@string/pause"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_centerInParent="true"
        android:paddingLeft="50dp"
        android:paddingRight="50dp"
        android:enabled="true" />
    <ImageView 
        android:id="@+id/icon2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="6dip"
        android:src="@drawable/ic2" />
</LinearLayout>

<LinearLayout
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:gravity="center_horizontal"
    android:background="#000000">
    <TextView
        android:text="some text"
        android:textSize="15pt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#ffffff"
        android:gravity="right" />
    <TextView
        android:text="more text"
        android:textSize="15pt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#ffffff"
        android:gravity="right" />
</LinearLayout>

<!-- </ScrollView>

<RelativeLayout

    android:layout_width="fill_parent"
    android:layout_height="60dip"
    android:layout_marginTop="-55dp"
    >
    <TextView
        android:text="Bottom"
        android:textSize="15pt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textColor="#ffffff" />
</RelativeLayout> -->

</LinearLayout>

Сильфон - это макет, который я пытаюсь достичь

---------------------
|  icon       text  |
|  button     text  |
|  button     text  |
|  icon       text  |
|                   |
|  more more text   |
---------------------

Ответы [ 4 ]

3 голосов
/ 09 марта 2011

Вам нужно обернуть все в третий LinearLayout с ориентацией = "вертикальный" и добавить свой TextView в конец.

В псевдо-макете:

<LinearLayout vertical>
    <LinearLayout horizontal>
        <LinearLayout vertical>
            ... column 1 ...
        </LinearLayout>
        <LinearLayout vertical>
            ... column 2 ...
        </LinearLayout>
    </LinearLayout>
    <TextView/>
</LinearLayout>

Это потому, что вы хотите, чтобы ваш TextView был вертикально ниже ваших столбцов.

1 голос
/ 10 марта 2011

Я думаю, что Мэтт ответил на ваш вопрос лучше всего, особенно если вы просто ищете быстрое решение.

Как упоминает B Mac, вы можете найти полезной TableLayout, а вот еще две ссылки, которые могут оказаться полезными.

  1. Оптимизация макета: относительный макет
  2. Отладка и профилирование пользовательских интерфейсов
0 голосов
/ 28 июня 2014

Попробуйте это:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tracker_id"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp">
<!-- <ScrollView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="60dip"> -->
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Education/Health"
                android:textColor="#FE9A2E"/>
            <TextView
                android:id="@+id/tot_val"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="$60"
                android:textColor="#FE9A2E"
                android:layout_marginLeft="5dp"/>
        </LinearLayout>
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <TableLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content">
                <TableRow
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content">
                    <TextView
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:text="Frequency"
                        android:textColor="#000"
                        android:layout_marginLeft="5dp"/>
                    <TextView
                        android:id="@+id/freq_spinner"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Monthly"
                        android:textColor="#FE9A2E"
                        android:layout_marginRight="5dp"/>
                 </TableRow>
                <TableRow
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content">
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Amount"
                        android:textColor="#000"
                        android:layout_marginLeft="5dp"
                        android:layout_weight="1"/>
                    <TextView
                        android:id="@+id/amount_edit"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="$20"
                        android:textColor="#FE9A2E"
                        android:layout_marginRight="5dp"/>
                 </TableRow>
                <TableRow
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content">
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Quarterly Amount"
                        android:textColor="#000"
                        android:layout_marginLeft="5dp"/>
                    <TextView
                        android:id="@+id/quarter_edit"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:text="$60"
                        android:textColor="#FE9A2E"
                        android:gravity="center"
                        android:layout_weight="1"/>
                    <TextView
                        android:id="@+id/quarter_edit"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="$60"
                        android:textColor="#FE9A2E"
                        android:layout_marginRight="5dp"
                        />
                 </TableRow>
            </TableLayout>
        </LinearLayout>
    </LinearLayout>
<!-- <LinearLayout
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:gravity="center_horizontal"
    android:background="#ffffff">
    <Button 
        android:id="@+id/stop_button"
        android:text="stop"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_centerInParent="true"
        android:paddingLeft="50dp"
        android:paddingRight="50dp"
        android:enabled="true" />
    <Button 
        android:id="@+id/pause_button"
        android:text="pause"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_centerInParent="true"
        android:paddingLeft="50dp"
        android:paddingRight="50dp"
        android:enabled="true" />
    <ImageView 
        android:id="@+id/icon2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="6dip"
        android:src="@drawable/ic_launcher" />
</LinearLayout>

<LinearLayout
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:gravity="center_horizontal"
    android:background="#000000">
    <TextView
        android:text="some text"
        android:textSize="15pt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#ffffff"
        android:gravity="right" />
    <TextView
        android:text="more text"
        android:textSize="15pt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#ffffff"
        android:gravity="right" />
</LinearLayout> -->

<!-- </ScrollView>

<RelativeLayout

    android:layout_width="fill_parent"
    android:layout_height="60dip"
    android:layout_marginTop="-55dp"
    >
    <TextView
        android:text="Bottom"
        android:textSize="15pt"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textColor="#ffffff" />
</RelativeLayout> -->

</LinearLayout>
0 голосов
/ 10 марта 2011

Вы пытались использовать TableLayout вместо LinearLayout для значков / кнопок / текстовых полей, которые составляют вашу Grid. Вы можете расположить его так, чтобы он имел два столбца и сколько бы строк не требовалось. (Если это не статическое расположение, и вы хотите прокручивать поля значков / кнопок / текстовых полей по мере добавления новых, вы можете рассмотреть макет ListView с пользовательскими представлениями макетов ... похоже, что вы здесь есть два, один с кнопкой и текстом, расположенным горизонтально, а другой со значком и текстом, расположенным горизонтально).

Затем используйте горизонтальный LinearLayout под TableLayout для последней строки с такими же размерами ширины, как определено в TableLayout (похоже, вы хотите, чтобы он охватывал два ваших столбца)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...