2015-04-11 3 views
-1

Speechbubble находится снаружи, но если я удалю изображение, он отлично работает. Что не так? Извините за мой плохой английский, надеюсь, вы поймете ошибку.Android Speech bubble находится за пределами деятельности

Это скриншот (речевой пузырь должен иметь запас слева).

enter image description here

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:emojicon="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:gravity="end" 
    tools:ignore="contentDescription" > 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="5dip" 
     android:background="@drawable/bubble" 
     android:gravity="end" 
     android:orientation="vertical" > 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="right" 
      android:linksClickable="true" 
      android:paddingLeft="10dp" 
      android:paddingRight="15dp" 
      android:paddingTop="10dp" 
      android:text="chat_right_textchat_right_textchat_right_textchat_right_text" 
      android:textColor="#ffffff" 
      android:textSize="15sp" 
      emojicon:emojiconSize="24dip" /> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="32dp" 
     android:layout_height="32dp" 
     android:layout_gravity="top" 
     android:layout_marginTop="5dip" 
     android:layout_marginLeft="5dip" 
     android:layout_marginRight="5dip" 
     android:gravity="right" 
     android:orientation="vertical" > 

     <ImageView 
      android:layout_width="32dp" 
      android:layout_height="32dp" 
      android:background="@drawable/picture" 
      android:gravity="right" /> 
    </LinearLayout> 

</LinearLayout> 

ответ

0

Вам нужно изменить LinearLayout, который содержит Bubble занять оставшуюся ширину вместо использования wrap_content для ширины. Вы можете сделать это, установив layout_weight в 1 и layout_width к 0dp:

<LinearLayout 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="5dip" 
    android:layout_weight="1" 
    android:background="@drawable/bubble" 
    android:gravity="end" 
    android:orientation="vertical" > 

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

+0

Теперь ширина Speechbubble составляет 100%, но это должно быть wrap_content. – Azcaq

+0

Затем вы попробовали просто добавить 'layout_weight =" 1 "' и сохранить свой 'layout_width =" wrap_content "'? – Cai

+0

У вас не может быть двух способов, к сожалению, если вы используете wrap_content, содержимое слишком велико, чтобы соответствовать, поэтому оно выходит за рамки вида, как раньше, тогда как если вы установите его на занятие оставшегося пространства, как указано выше, оно будет сделайте все возможное с пространством, которое у него есть, текст просто создаст больше строк. –

Смежные вопросы