Вставить текст в изображение

Я хочу отобразить собственный текст (в основном информацию о человеке) внутри изображения

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

3 ответа

Решение

Есть несколько способов сделать это.

Я бы сделал так, чтобы превратить изображение в 9-патч. Либо не позволяйте ему растягиваться, либо пометьте области вне персонажа для растяжения. В любом случае используйте правую и нижнюю области, чтобы отметить, куда на изображении вы хотите, чтобы текст шел.

Затем вы просто устанавливаете 9-патч в качестве фона для TextView, и ваш текст будет размещен в регионе, который вы отметили в 9-патче.

Альтернативным методом будет использование RelativeLayout с ImageView и TextViewзатем просто поместите TextView туда, где он вам нужен. Тем не менее, я считаю, что пытаться правильно расположить представления с помощью этого метода утомительно и подвержено ошибкам. 9-патч также позволит вам использовать это изображение практически с любой длиной текста, не беспокоясь о тексте, выходящем за пределы области содержимого.

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

Например что-то похожее на это:

<LinearLayout
android:background="@drawable/background"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >

    <TextView
     android:id="@+id/firstLine"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:gravity="center_vertical"
     android:textSize="16sp" />

    <TextView
     android:id="@+id/secondLine"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:maxLines="2"
     android:textSize="12sp" />
</LinearLayout>

Ну, как я предложил в комментарии ранее, поставить ImageView а также TextView в RelativeLayoutпримерно так (свойства случайные):

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/Image"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="20dp"
        android:layout_weight="0"
        android:background="#ff1234"
        android:scaleType="centerCrop" />

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_below="@id/Image"
        android:layout_toRightOf="@id/Image"
        android:layout_weight="1"
        android:text="6363"
        android:background="#ff0034" />
</RelativeLayout>
Другие вопросы по тегам