Как ограничить ширину текста в соответствии с шириной слева

У меня есть макет (может быть относительным, линейным или ограниченным)

с TextView, выровненным с родительским левым, а затем выравниванием ImageView (fix width), который начинается прямо с textView.

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

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

  <RelativeLayout
      android:id="@+id/account_name_layout"
      android:layout_width="match_parent"
      android:layout_height="0dp"
      android:layout_weight="1"
      android:layout_marginBottom="@dimen/account_menu_account_name_layout_bottom_margin">
    <TextView
        android:id="@+id/account_name"
        style="@style/AccountDataAccountName"
        android:layout_centerVertical="true"
        android:layout_alignParentLeft="true"
        android:lines="1"
        android:ellipsize="end"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        tools:text="emailisverylongaswellwewantittogettruncated@gmail.longdomain.com"/>

    <ImageView
        android:id="@+id/account_name_chevron"
        android:layout_width="@dimen/account_menu_chevron_size"
        android:minWidth="@dimen/account_menu_chevron_size"
        android:layout_height="@dimen/account_menu_chevron_size"
        android:layout_centerVertical="true"
        android:layout_toRightOf="@+id/account_name"
        android:layout_marginTop="@dimen/account_menu_chevron_top_margin"
        android:layout_marginLeft="@dimen/account_menu_chevron_left_margin"/>
  </RelativeLayout>

Я попробовал несколько вариантов:

1) указание текста для просмотра изображения

2) перенос веса на текстовый вид - сделанный разрыв между двумя элементами.

3) установка minWidth для изображения - не помогло просто уменьшить масштаб imageView.

Любая идея, как сделать изображение в первую очередь и как ограничить ширину textView в соответствии с левой шириной?

Всего 1 ответ


Вы можете форсировать ширину изображения. Это предотвратит отрыв текста из пространства. Если вы говорите, что сделали это, отправьте полученное изображение, поскольку это не имеет никакого смысла.

В приведенном выше примере нет ограничений друг для друга, нет принуждения, чтобы не накладывать или не отталкивать. Вам нужны некоторые ограничения, такие как «toTheLeftOf» или «Weight» или LinearLayout, чтобы обеспечить его выполнение, поскольку Weight работает только в LinearLayout.

Самый простой способ - просто дать imageView строчную ширину и высоту DP, а затем установить текст в 0 шириной с весом 1 в линейной компоновке.

Вы также можете использовать проценты, если хотите, используйте LinearLayout, а затем положите сумму веса, например, 100 (что составляет 100%). Затем присвойте свой образ любому проценту, который вам нужен, например layout_weight = 30, и дайте текстовое изображение 70.

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


Есть идеи?

10000