Как предотвратить совпадение представлений от относительного макета?

Прямо сейчас у меня есть два textViews, один по выровненному слева от относительного макета, а один – вправо. Текст слева намного длиннее текста справа. В некоторых случаях текст слева состоит из двух строк. Когда это происходит, текст перекрывает текст, который выровнен справа.

Есть ли способ предотвратить это? Или есть способ сказать, если текст слева состоит из двух строк, поместите текст справа на второй строке?

У меня проблемы с именем и временем здесь:

<RelativeLayout android:layout_width="wrap_content" android:id="@+id/relativeLayout" android:layout_height="wrap_content"> <TextView android:text="TextView" android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10sp" android:textStyle="bold" android:textSize="16sp"></TextView> <TextView android:layout_width="wrap_content" android:id="@+id/address" android:text="address" android:layout_height="wrap_content" android:layout_below="@+id/name" android:layout_alignLeft="@+id/name" android:layout_marginLeft="30sp"></TextView> <TextView android:layout_width="wrap_content" android:layout_toRightOf="@+id/address" android:text="" android:layout_height="wrap_content" android:layout_alignTop="@+id/address" android:layout_alignBottom="@+id/address" android:id="@+id/crossStreet"></TextView> <TextView android:layout_width="wrap_content" android:id="@+id/time" android:text="Time" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_marginRight="10sp"></TextView> </RelativeLayout> 

Solutions Collecting From Web of "Как предотвратить совпадение представлений от относительного макета?"

Не могли бы вы разместить эти два текстовых элемента в горизонтальном LinearLayout (который сам по-прежнему будет дочерним элементом вашего RelativeLayout). Затем назначьте соответствующие атрибуты веса каждому из двух текстовых элементов внутри этого LinearLayout.

Чтобы получить тот же результат, используя RelativeLayout используйте android:layout_toLeftOf="@+id/right_text" . Он будет располагать правый край этого вида слева от данного идентификатора вида привязки.

Пожалуйста, следуйте этому примеру:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingLeft="@dimen/margin_material_small" android:paddingRight="@dimen/margin_material_small"> <TextView android:id="@+id/long_text" style="@style/Base.TextAppearance.AppCompat.Title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_toLeftOf="@+id/right_text" android:singleLine="true" tools:text="Some text field that will definitely overlap with another one" /> <TextView android:id="@+id/right_text" style="@style/Base.TextAppearance.AppCompat.Display1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:singleLine="true" tools:text="10.34" /> <TextView android:id="@+id/subtext" style="@style/Base.TextAppearance.AppCompat.Medium" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/long_text" android:layout_alignParentLeft="true" android:layout_toLeftOf="@+id/right_text" android:singleLine="true" tools:text="Some other text slightly smaller"/> </RelativeLayout> 

Результат вышеуказанной компоновки:

Результат прилагаемого примера

Пожалуйста, проверьте ниже код, более полезный для вас.

 <?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="wrap_content" android:orientation="horizontal"> <LinearLayout android:layout_width="fill_parent" android:weightSum="1.0" android:id="@+id/relativeLayout" android:layout_height="wrap_content"> <TextView android:text="TextView1 hhhhh hhhhhhhh hhhhhhhh hhhhhhh hhhhhh" android:id="@+id/name" android:layout_weight="0.5" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_marginLeft="10sp" android:textStyle="bold" android:textSize="16sp"></TextView> <TextView android:layout_width="0dip" android:layout_weight="0.5" android:id="@+id/time" android:text="Textview4" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_marginRight="10sp"></TextView> </LinearLayout> </LinearLayout> 
 <RelativeLayout android:id="@+id/relativeParent" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/titleLeft" android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_toLeftOf="@+id/imageRight" android:layout_alignParentStart="true" /> <ImageView android:id="@+id/imageRight" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:src="@drawable/image" /> </RelativeLayout> android:layout_toLeftOf="@+id/imageRight" android:layout_alignParentStart="true" 

Сделал трюк без добавления дополнительного LinearLayout

Лучшее исправление:

 android:layout_toStartOf="@id/item_on_the_right"