Проблемы с относительным расположением

1

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

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"

android:padding="6dip">

<ImageView
    android:id="@+id/icon"

    android:layout_width="wrap_content"
    android:layout_height="fill_parent"

    android:layout_alignParentTop="true"
    android:layout_alignParentBottom="true"
    android:layout_marginRight="6dip"
/>

<TextView
    android:id="@+id/title"

    android:layout_width="fill_parent"
    android:layout_height="20dip" 

    android:layout_toRightOf="@id/icon"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:textStyle="bold"
    android:singleLine="true"
    android:ellipsize="marquee"
/>

<TextView
    android:id="@+id/address"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textSize="12dip"
    android:layout_toRightOf="@id/icon"
    android:layout_alignParentRight="true"
    android:layout_below="@id/title"
/>
<TextView
    android:id="@+id/date"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/icon"
    android:layout_below="@id/address"
    android:layout_alignParentRight="true"
    android:textSize="12dip"
    android:singleLine="true"
    android:ellipsize="end" />
<TextView
    android:id="@+id/url"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/date"
     />

С этой текущей попыткой XML с URL-адресом справа от @id/date... он вообще не отображается. Если я поместил его вRightOf = "@id/icon", он появится буквально сверху, а не над заголовком.

Спасибо за любую помощь!

Теги:

3 ответа

0
Лучший ответ

Вот XML, который я написал, который делает макет так, как я хотел.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"

android:padding="6dip">

<ImageView
    android:id="@+id/icon"

    android:layout_width="wrap_content"
    android:layout_height="fill_parent"

    android:layout_alignParentTop="true"
    android:layout_alignParentBottom="true"
    android:layout_marginRight="6dip"
/>

<TextView
    android:id="@+id/title"

    android:layout_width="fill_parent"
    android:layout_height="20dip" 

    android:layout_toRightOf="@id/icon"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:textStyle="bold"
    android:singleLine="true"
    android:ellipsize="marquee"
/>

<TextView
    android:id="@+id/address"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textSize="12dip"
    android:layout_toRightOf="@id/icon"
    android:layout_alignParentRight="true"
    android:layout_below="@id/title"
/>
<TextView
    android:id="@+id/date"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/icon"
    android:layout_below="@id/address"
    android:textSize="12dip"
    android:singleLine="true"
    android:ellipsize="end" />
<TextView
    android:id="@+id/url"
    android:layout_marginLeft="10dip"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/date"
    android:layout_alignBaseline="@id/date"
    android:autoLink="web"
    android:textColorLink="#7d26cd"
     />

Спасибо всем за ваши знания!

0

Посмотрите на следующее:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content" android:layout_width="fill_parent">
<ImageView android:id="@+id/ImageView01"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:src="@drawable/icon">
</ImageView>
<TextView android:layout_height="wrap_content" 
    android:text="@+id/title"
    android:layout_width="wrap_content" 
    android:layout_toRightOf="@+id/ImageView01" 
    android:id="@+id/title">
</TextView>
<TextView android:layout_below="@+id/title"
    android:layout_height="wrap_content" 
    android:text="@+id/address"
    android:id="@+id/address" 
    android:layout_toRightOf="@+id/ImageView01"
    android:layout_width="wrap_content">
</TextView>
<TextView android:layout_below="@+id/address"
    android:layout_height="wrap_content" 
    android:text="@+id/date"
    android:id="@+id/date" 
    android:layout_toRightOf="@+id/ImageView01"
    android:layout_width="wrap_content">
</TextView>
<TextView android:layout_below="@+id/title"
    android:layout_height="wrap_content" 
    android:text="@+id/url"
    android:id="@+id/url" 
    android:layout_toRightOf="@+id/address" 
    android:layout_width="fill_parent">
</TextView>

</RelativeLayout>

Это то, что вы имели в виду? Также я бы предложил рассмотреть комбинацию LinearLayouts (горизонтальной и вертикальной).

  • 0
    В конце концов я выяснил свою проблему ... это было то, что у меня есть "fill_parent" в элементе даты. Я также пытался держаться подальше от LinearLayouts из-за оптимизации. На этом URL ( android-developers.blogspot.com/2009/02/… ) он утверждает, что «Этот макет работает (LinearLayout), но может быть напрасным, если вы создаете его экземпляр для каждого элемента списка в ListView. Такой же макет может быть переписан с использованием одного RelativeLayout, таким образом сохраняя одно представление и, что еще лучше, один уровень в иерархии представлений для каждого элемента списка. "
  • 0
    Я хотел сказать вам, что я попробовал ваш XML, и он тоже работает! Спасибо!
Показать ещё 1 комментарий
0

The HeirarchyViewer под инструментами может помочь вам понять, что происходит. Поскольку у вас есть ширина макета, установленная на fill_parent, а не wrap_content, возможно, что ваш @id/date не отображается, потому что он отображается с экрана.

Трудно сказать из вашего описания, что именно вы пытаетесь выполнить, вы можете добавить рис. Однако вы пытались указать @id/date для выравнивания родительского права слева или справа?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню