2011-12-16 3 views
0

Я хочу отобразить список с игровыми оценками в своем приложении для Android. Список должен выглядеть следующим образом:5 расположение столбца с элементами в центре с центром

enter image description here

Как вы можете видеть на картинке выше у меня есть 5 элементов вида в ряд:

  1. имя Первой команды
  2. флаг Первой команды
  3. Счёт по игре
  4. Флаг второй команды
  5. Вторая команда

Элементы 2, 3 и 4 всегда должны быть центрированы в середине строки, так что двоеточия и флаги игр находятся непосредственно над/под друг другом, а длина имен команд может варьироваться.

До сих пор я экспериментировал с RelativeLayout, TableLayout и LinearLayouts, но не смог найти рабочего решения.

Что было бы лучшим подходом к достижению жалкого макета? Макет должен работать с Android 1.6, вертикальной и горизонтальной ориентацией.

ответ

0

После поворота с RelativeLayouts мне удалось найти следующее решение, которое работает в портретном и ландшафтном режимах.

<RelativeLayout 
    android:id="@+id/mainlayout" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/headerLayout" 
    android:layout_centerVertical="true" 
    android:layout_marginBottom="5dip" 
    android:layout_marginTop="5dip" > 

    <TextView 
     android:id="@+id/teamAName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_centerVertical="true" 
     android:layout_toLeftOf="@+id/innerlayout" 
     android:gravity="center_vertical|right" 
     android:text="Team A" 
     android:textColor="@color/black" 
     android:textSize="12dip" 
     android:textStyle="bold" /> 

    <RelativeLayout 
     android:id="@id/innerlayout" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:paddingLeft="6dip" 
     android:paddingRight="6dip" > 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_toLeftOf="@+id/score" 
      android:src="@drawable/de" /> 

     <TextView 
      android:id="@id/score" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerHorizontal="true" 
      android:layout_centerVertical="true" 
      android:layout_marginLeft="6dip" 
      android:layout_marginRight="6dip" 
      android:background="@drawable/scorebox" 
      android:paddingLeft="6dip" 
      android:paddingRight="6dip" 
      android:text="18:00" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:textColor="@color/white" 
      android:textStyle="bold" /> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_toRightOf="@id/score" 
      android:src="@drawable/de" /> 
    </RelativeLayout> 

    <TextView 
     android:id="@+id/teamBName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true" 
     android:layout_toRightOf="@id/innerlayout" 
     android:gravity="center_vertical" 
     android:text="Team B" 
     android:textColor="@color/black" 
     android:textSize="12dip" 
     android:textStyle="bold" /> 
</RelativeLayout> 
-1

попробовать его друга:

<LinearLayout 
    android:id="@+id/linearLayoutRow" 
    android:layout_width="fill_parent" 
    android:layout_height="50dp" > 

    <LinearLayout 
     android:id="@+id/linearLayoutTeam1" 
     android:layout_width="85dp" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" > 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/linearLayoutFlag1" 
     android:layout_width="50dp" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" > 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/linearLayoutScore" 
     android:layout_width="50dp" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" > 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/linearLayoutFlag2" 
     android:layout_width="50dp" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" > 
    </LinearLayout> 


    <LinearLayout 
     android:id="@+id/linearLayoutTeam2" 
     android:layout_width="85dp" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" > 
    </LinearLayout> 

</LinearLayout> 

и редактированием XXdp;)

+0

Почему -1, если это работает? – ademar111190

0

listItem.xml для customAdapter может быть как:

<RelativeLayot> 
<TextView TeamA alignParentLeft /> 
<RelativeLayot alignParentcenter> 
    <ImageView flag1 alignParentLeft /> 
    <TextView 1.2 alignParentcenter /> 
    <ImageView flag2 alignParentRight /> 
</RelativeLayot> 
<TextView TeamB alignParentReight/> 
</RelativeLayot> 
+0

Правильное направление, но alignParent для внутреннего RelativeLayout не работает. Тем не менее мне удалось найти рабочее решение с помощью RelativeLayouts, см. Мой ответ. – Philipp

2

Строка может выглядеть следующим образом:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" > 
    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_weight="4" 
     android:gravity="center_vertical|right" 
     android:text="Team A" /> 
    <LinearLayout 
     android:id="@+id/linearLayout1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="2" 
     android:gravity="center" 
     android:orientation="horizontal" > 
     <ImageView 
      android:id="@+id/imageView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/icon" /> 
     <TextView 
      android:id="@+id/textView3" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="1 : 2" /> 
     <ImageView 
      android:id="@+id/imageView2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/icon" /> 
    </LinearLayout> 
    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_weight="4" 
     android:gravity="center_vertical|left" 
     android:text="Team B" /> 
</LinearLayout> 

Если отношение между центральным объектом и двумя сторонами не является правильным, попробуйте изменить значение layout_weight.

+0

После более тщательного изучения этот подход не работает с именами команд различной длины. Мне удалось найти решение, работающее с относительными макетами, см. Мой ответ. – Philipp

Смежные вопросы