Проблема поля RelativeLayout, перетекание текста в другие «поля» - PullRequest
2 голосов
/ 08 марта 2011

пытался выяснить макеты Android и столкнулся с некоторой проблемой. я дошел до того, что выяснил, как получить объекты в нужных местах, используя RelativeLayout (пробовал комбинации LinearLayout и TableLayout, только чтобы обнаружить, что гравитация и атрибуты не делали то, что я думал, что они будут ...), но я возникла проблема с кровотечением текста за другим текстом.

Valid XHTML

второй пункт демонстрирует проблему. Я хотел бы иметь такой же макет без кровотечения текста. вот мой код:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_height="?android:attr/listPreferredItemHeight"
        android:layout_width="wrap_content"
        android:padding="6dip">
    <TextView android:id="@+id/item_text_product"
            android:layout_alignParentLeft="true" 
            android:textSize="24sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    <TextView android:id="@+id/item_text_total"
            android:layout_alignParentRight="true"
            android:textSize="18sp"
            android:textStyle="bold"
            android:textColor="#00aa00"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    <TextView android:id="@+id/item_text_count"
            android:layout_alignParentRight="true"
            android:layout_below="@id/item_text_total"
            android:textSize="12sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    <TextView android:id="@+id/text_count"
            android:text="Count: " 
            android:textSize="12sp"
            android:layout_toLeftOf="@id/item_text_count" 
            android:layout_alignBaseline="@id/item_text_count" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
</RelativeLayout>

Ответы [ 5 ]

2 голосов
/ 08 марта 2011

Сначала поместите ваши элементы item_text_count и text_count (я имею в виду, поместите их выше text_count в XML) ... затем:

<TextView android:id="@+id/item_text_total"
        android:layout_alignParentRight="true"
        android:layout_toLeftOf="@id/text_count"
        android:textSize="18sp"
        android:textStyle="bold"
        android:textColor="#00aa00"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

Как видите, разница составляет android:layout_toLeftOf="@id/text_count".

1 голос
/ 08 марта 2011

Установите атрибут maxEms для продукта TextView, чтобы его ширина никогда не превышала n ems.

Таким способом должно быть наилучшее решение.

1 голос
/ 08 марта 2011

Я думаю, вам просто нужно добавить android:layout_toRightOf="@id/item_text_product" ко второму textView, но вы не можете попробовать это прямо сейчас.

0 голосов
/ 08 марта 2011

Проблема связана с wrap_content, поэтому представление будет расширяться для соответствия его содержимому.

Как насчет сжатия текста и использования вложенных линейных макетов?

0 голосов
/ 08 марта 2011

Вы можете попробовать использовать LinearLayout, если вы не хотите, чтобы перекрывающееся поведение.

Что-то вроде:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:layout_width="wrap_content"
    android:padding="6dip">
    <TextView android:id="@+id/item_text_product"
        android:textSize="24sp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView android:id="@+id/item_text_total"
            android:layout_alignParentRight="true"
            android:textSize="18sp"
            android:textStyle="bold"
            android:textColor="#00aa00"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <TextView android:id="@+id/item_text_count"
            android:layout_alignParentRight="true"
            android:layout_below="@id/item_text_total"
            android:textSize="12sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <TextView android:id="@+id/text_count"
            android:text="Count: " 
            android:textSize="12sp"
            android:layout_toLeftOf="@id/item_text_count" 
            android:layout_alignBaseline="@id/item_text_count" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </RelativeLayout>
</LinearLayout>

layout_weight = "1" заставляет это представление расширяться, чтобы заполнитьдоступное пространство не занято правым обзором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...