2010-08-06 2 views
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 справа от @ ид/дата ... он не появляется вообще. Если я поместил его вRightOf = "@ id/icon", он появится буквально сверху, а не над заголовком.

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

ответ

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

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

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

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» в элементе date. Я также старался держаться подальше от LinearLayouts из-за оптимизации. На этом URL-адресе (http://android-developers.blogspot.com/2009/02/android-layout-tricks-1.html) он утверждает, что «этот макет работает (LinearLayout), но может быть бесполезным, если вы его создаете для каждый элемент списка в ListView. Тот же макет может быть перезаписан с использованием одного RelativeLayout, таким образом сохраняя один вид и даже лучший уровень иерархии в каждом элементе списка. " – taraloca

+0

Я хотел сказать вам, что я пробовал ваш XML, и он тоже работает! Благодаря! – taraloca

+0

Хороший пост! Спасибо за указание. – Asahi

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