Изменение размера изображения 9 патчей по отношению к содержимому

Мне нужно мое изображение с 9 патчами, чтобы обернуть содержимое. Если есть небольшой текст, он должен быть очень маленьким, чтобы обернуть этот текст. И если есть изображение, вставленное перед текстом, оно также должно обернуть его. Вот мой 9-патч png:

9-patch

Но вот как это выглядит с содержанием:

Сообщение

Это код в xml файле:

<RelativeLayout
    android:id="@+id/message_text_layout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/other_user_layout"
    android:layout_toLeftOf="@+id/user_layout"
    android:layout_below="@id/message_date"
    >
    <TextView
        android:id="@+id/message_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@color/white"
        android:layout_marginTop="@dimen/margin"
        />
    <ImageView
        android:id="@+id/message_picture"
        android:layout_width="wrap_content"
        android:layout_height="100dp"
        android:layout_centerInParent="true"
        android:scaleType="fitCenter"/>
</RelativeLayout>

Я устанавливаю фон для этого относительного макета программно. Как я могу сделать этот макет сообщения, чтобы он точно соответствовал содержимому и не растягивался по всему экрану.


person Max Zavernutiy    schedule 02.06.2015    source источник
comment
Вы знали? вы можете сэкономить на RealtiveLayout и ImageView и иметь один TextView. Итак, для повышения производительности.   -  person Phantômaxx    schedule 02.06.2015
comment
@DerGolem Не совсем так, как я могу это сделать? Я слышал, что могу поместить изображение сбоку от текстового поля, но я не знаю, как это реализовать здесь.   -  person Max Zavernutiy    schedule 02.06.2015
comment
в xml: используйте drawableRight="@drawable/balloon". В Java используйте setCompoundRwawablesWithIntrinsicBounds(). Вы можете установить 4 drawables одновременно. Тогда контейнер RelativeLayout бесполезен.   -  person Phantômaxx    schedule 02.06.2015


Ответы (2)


Проблема была в строках:

android:layout_toRightOf="@id/other_user_layout"
android:layout_toLeftOf="@+id/user_layout"

Я устанавливаю один из них программно в зависимости от автора сообщения.

person Max Zavernutiy    schedule 02.06.2015

попробуй использовать только textview

<TextView
    android:id="@+id/message_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="@color/white"
    android:layout_marginTop="@dimen/margin"
    android:layout_background="@drawable/img"/>

вместо

<RelativeLayout
android:id="@+id/message_text_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/other_user_layout"
android:layout_toLeftOf="@+id/user_layout"
android:layout_below="@id/message_date"
>
<TextView
    android:id="@+id/message_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="@color/white"
    android:layout_marginTop="@dimen/margin"
    />
<ImageView
    android:id="@+id/message_picture"
    android:layout_width="wrap_content"
    android:layout_height="100dp"
    android:layout_centerInParent="true"
    android:scaleType="fitCenter"/>

person Angad Tiwari    schedule 02.06.2015