#android #android-relativelayout
#Android #android-relativelayout
Вопрос:
У меня есть listview с элементом, указанным 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>
Ответ №1:
Я никогда раньше не работал с кодированием 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"/>
Я никогда раньше не работал с базой кода и у меня нет «решения» для вас, но, возможно, это даст вам отправную точку.
Ответ №2:
Поскольку изображение больше не существует в виде сверху, макет стал меньше, поэтому текстовые представления стали ближе. Поместите некоторое расстояние между двумя текстовыми представлениями, чтобы устранить проблему.
Комментарии:
1. Обратите внимание, что желателен первый вариант. Таким образом, добавление поля не сработает.
Ответ №3:
Решена проблема путем извлечения linearlayout и перемещения в него фотографии. По какой-то причине эта фотография в том же макете содержит пробелы между текстами.
<?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>