RelativeLayout toLeftOf

У меня есть RelativeLayout внутри LinearLayout, который я использую для отображения некоторых данных:

<LinearLayout
    android:id="@+id/linearLayout4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginRight="3dp"
    android:layout_marginTop="3dp"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="3dp"
        android:ellipsize="end"
        android:maxLines="1"
        android:textSize="16dp"
        android:textStyle="bold" />

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center_vertical"
            android:singleLine="true" />

        <ImageView
            android:id="@+id/uhr"
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:layout_gravity="left"
            android:layout_marginLeft="2dp"
            android:layout_toRightOf="@id/time"
            android:src="@drawable/event_clock" />
    </RelativeLayout>

    <TextView
        android:id="@+id/description"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="3dp"
        android:autoLink="web|email"
        android:textSize="14dp" />
</LinearLayout>

Проблема в том, что я хочу, чтобы мой ImageView был слева, а TextView рядом с ним. Однако, если я изменю android:layout_toRightOf="@id/time" на android:layout_toLeftOf="@id/time", он покажет только TextView, но ImageView исчезнет.


person user754730    schedule 13.11.2012    source источник


Ответы (1)


Просто поместите layout_toRightOf в TextView, затем:

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/uhr"
        android:gravity="center_vertical"
        android:singleLine="true" />

    <ImageView
        android:id="@+id/uhr"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_gravity="left"
        android:layout_marginLeft="2dp"
        android:src="@drawable/event_clock" />
</RelativeLayout>
person sdabet    schedule 13.11.2012
comment
Ничего себе, как ни странно, вчера это не работало (всегда выдавало ошибки и не компилировалось), а сегодня работает. Не менял код, тот же компьютер и т. д. Большое спасибо за вашу помощь! - person user754730; 13.11.2012
comment
Это решение иногда работает, иногда нет. У меня похожий макет, но с двумя EditTexts, и я хочу, чтобы изображение было слева от этих EditTexts. Он не работает с toLeftOf на изображении, но работает с toRightOf, если я установил его в первом EditText. Однако, если я попробую то же самое, т.е. установлю toRightOf для второго EditText, это не даст никакого эффекта - второе изображение не будет показано. - person Ted; 12.01.2013
comment
Вы уверены, что это не проблема объявления идентификаторов после того, как вы их фактически используете? Убедитесь, что вы всегда используете нотацию @+id/... (не @id/...) - person sdabet; 13.01.2013