Вставить текст в изображение
Я хочу отобразить собственный текст (в основном информацию о человеке) внутри изображения
Как я могу сделать это в 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>