Проблемы с относительным размещением в Android - PullRequest
1 голос
/ 20 июля 2010

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

Я прикрепил изображение в стиле каркаса, как я пытаюсь, чтобы он выглядел, и мне было интересно, может ли кто-нибудь мне помочь?

альтернативный текст http://i26.tinypic.com/6fz702.jpg

  • ImageView справа - это заданный значок полной высоты строки с отступом вокруг него?
  • Два TextView занимают большую часть ширины. Текстовое представление Address может иметь длинный текст, поэтому может потребоваться его усечение, если в нем не хватает места или в идеале размер шрифта должен быть уменьшен?
  • Следующий TextView будет содержать небольшую строку длиной до 5 символов.
  • Последний ImageView - маленькая стрелка, означающая, что на этот элемент списка можно кликнуть для получения дополнительной информации. Это должно быть в центре, как показано.
  • Хотелось бы, чтобы значок, последнее текстовое представление и последнее изображение всегда были в одном месте / выравнивались по списку.

Если бы кто-то мог предложить какую-то помощь в этом, я был бы очень благодарен.

Ура, ребята

Ответы [ 2 ]

11 голосов
/ 16 августа 2010

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

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip">
<ImageView
    android:id="@+id/Icon"
    android:layout_margin="5dip"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true" />
<TextView
    android:id="@+id/topLine"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:lines="1"
    android:layout_toRightOf="@+id/Icon"
    android:layout_toLeftOf="@+id/distance"
    android:textColor="@color/blacktext"
    android:textSize="20dip"
    android:text="Name" />
<TextView
    android:id="@+id/bottomLine"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:lines="1"
    android:layout_toRightOf="@+id/Icon"
    android:layout_below="@+id/topLine"
    android:layout_toLeftOf="@+id/distance"
    android:textColor="@color/blacktext"
    android:textSize="15dip"
    android:text="Address" />
<TextView 
    android:id="@+id/distance"
    android:layout_height="wrap_content"
    android:layout_toLeftOf="@+id/arrow"
    android:layout_centerVertical="true"
    android:layout_width="wrap_content"
    android:lines="1"
    android:textColor="@color/blacktext"
    android:textSize="12dip"
    android:text="100m" />
<ImageView 
    android:id="@+id/arrow"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_margin="5dip"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true" 
    android:src="@drawable/redarrow"/>
</RelativeLayout>
0 голосов
/ 20 июля 2010

Я сделал нечто подобное (кроме изображения слева)

Это может помочь вам:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_vertical"
    android:minHeight="?android:attr/listPreferredItemHeight"
    android:orientation="vertical">
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/TextView01"
        android:id="@+id/LinearLayout01"
        android:gravity="center_vertical"
        android:orientation="horizontal">
        <LinearLayout
            android:layout_width="0dip"
            android:layout_weight="1"
            android:paddingRight="8dip"
            android:layout_height="wrap_content"
            android:id="@+id/LinearLayout01"
            android:orientation="vertical">
            <TextView
                android:text="@string/Birthday"
                android:id="@+id/txtTitlevalue"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:singleLine="true"
                android:ellipsize="end"
                android:layout_weight="1"
                android:textAppearance="?android:attr/textAppearanceLarge"></TextView>
            <TextView
                android:text="1960-01-01"
                android:id="@+id/txtSubvalue"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="-4dip"
                android:singleLine="true"
                android:ellipsize="end"
                android:layout_weight="10"
                android:textAppearance="?android:attr/textAppearanceSmall"></TextView>
        </LinearLayout>
        <TextView
            android:text="2"
            android:id="@+id/txtNumber"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textStyle="bold"
            android:layout_marginRight="10dip"
            android:layout_gravity="center_vertical|right"></TextView>
        <TextView
            android:text="weeks"
            android:id="@+id/txtUnit"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="10dip"
            android:layout_gravity="center_vertical|right"></TextView>
    </LinearLayout>
    <!-- <View
        android:background="@drawable/black_white_gradient"
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:layout_marginTop="2dip"
        android:layout_marginBottom="2dip"
        android:clickable="true"
        android:focusable="true"
        android:layout_below="@+id/LinearLayout01" /> -->
</LinearLayout>
...