Почему два элемента в одном и том же относительном макете расположены по-разному? - PullRequest
1 голос
/ 03 июня 2011

У меня есть список с элементом, указанным RelativeLayout

Есть изображение (серая стрелка, это png, с прозрачным заполнением). В первом случае текст с синей задней частью перекрывает это изображение, во втором - выравнивается. Единственная разница между этими случаями состоит в том, что левая фотография невидима в первом случае. Я не понимаю, почему во втором случае синий текст не перекрывается серой стрелкой? (желательно поведение)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:padding="@dimen/padding_content">
  <ru.ip_news.ui.views.RationalImage
    android:id="@+id/picture"
    android:layout_width="@dimen/article_short_image_width"
    android:layout_height="fill_parent"/>
  <View
    android:id="@+id/separator"
    android:layout_width="@dimen/padding_content"
    android:layout_height="fill_parent"
    android:layout_toRightOf="@id/picture"/>
  <ImageView
    android:id="@+id/dis_ind"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:src="@drawable/dis_ind"/>   
  <TextView
    android:id="@+id/title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/separator"
    android:layout_toLeftOf="@id/dis_ind"
    android:layout_gravity="left"
    android:textStyle="bold"
    android:textColor="@color/article_text_main"
    android:maxLines="2"
    android:ellipsize="end"
    android:background="#F0F0"/>
  <TextView
    android:id="@+id/description"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/separator"
    android:layout_below="@id/title"
    android:layout_alignParentBottom="true"
    android:textColor="@color/article_text_secondary"
    android:maxLines="4"
    android:background="#F00F"/>
</RelativeLayout>

enter image description here

Ответы [ 3 ]

0 голосов
/ 03 июня 2011

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

0 голосов
/ 04 июня 2011

Решил проблему путем извлечения линейного макета и перемещения фотографии к нему.По какой-то причине эта фотография в том же макете включает пространство между текстами.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="@dimen/padding_content">
    <ru.ip_news.ui.views.RationalImage
        android:id="@+id/picture"
        android:layout_width="@dimen/article_short_image_width"
        android:layout_height="fill_parent"/>
    <RelativeLayout   
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:paddingLeft="@dimen/padding_content">
      <ImageView
        android:id="@+id/dis_ind"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:src="@drawable/dis_ind"/>   
      <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@id/dis_ind"
        android:layout_gravity="left"
        android:layout_alignParentLeft="true"
        android:textStyle="bold"
        android:textColor="@color/article_text_main"
        android:maxLines="2"
        android:ellipsize="end"/>
      <TextView
        android:id="@+id/description"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/title"
        android:layout_alignParentBottom="true"
        android:textColor="@color/article_text_secondary"
        android:maxLines="4"/>
    </RelativeLayout>
</LinearLayout>
0 голосов
/ 03 июня 2011

Я никогда раньше не работал с Android-кодированием, но просто глядя на ваш код, я бы сказал, что существует конфликт между android:layout_alignParentRight="true", найденным здесь:

<ImageView
    android:id="@+id/dis_ind"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:src="@drawable/dis_ind"/> 

, и вашим android:layout_alignParentBottom="true", найденным здесь.:

  <TextView
    android:id="@+id/description"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/separator"
    android:layout_below="@id/title"
    android:layout_alignParentBottom="true"
    android:textColor="@color/article_text_secondary"
    android:maxLines="4"
    android:background="#F00F"/>

Я никогда раньше не работал с базой кода и у меня нет для вас "решения", но, возможно, оно даст вам отправную точку.

...