Текст с фигурами в ресурсе
Могу ли я создать текстовую форму в ресурсе с возможностью рисования?
Я много гулял, но ничего не нашел...
Вот мой доступный файл:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval">
<stroke android:width="3dp" android:color="#QQffQQ"/>
<size android:width="120dp" android:height="120dp"/>
</shape>
</item>
<item android:right="59dp" android:left="59dp">
<shape android:shape="rectangle">
<solid android:color="£22££20"/>
</shape>
</item>
<item android:top="59dp" android:bottom="59dp">
<shape android:shape="rectangle">
<solid android:color="£20££20"/>
</shape>
</item>
<item>
<!--text should be here-->
</item>
</layer-list>
Ответы
Ответ 1
Нет, ты не можешь сделать это. Одна идея состоит в том, чтобы установить Drawable
в качестве фона для TextView
а затем просто установить текст в TextView
, который будет отображаться над другими слоями вашего Drawable
. Конечно, это не может быть использовано для заставки, для которой требуется доступный ресурс, как упомянуто zyamys в комментарии ниже. Идея для этого случая заключается в создании статических изображений с интересующим вас текстом. К сожалению, это не распространяется на случаи, когда текст должен быть динамическим.
Ответ 2
Вместо этого вы можете использовать векторное рисование (например, путем конвертации из SVG файла).
Затем используйте вектор как один из слоев.
Это позволяет вам создать один объект рисования без каких-либо текстовых представлений, так что вы можете легко использовать его в качестве фонового окна в вашей теме заставки.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:angle="270"
android:startColor="#C3DAE0"
android:endColor="#FFFFFF"
android:type="linear"/>
</shape>
</item>
<item
android:gravity="center"
android:drawable="@drawable/ic_splash_text"/>
</layer-list>
Где ic_splash_text - вектор, который можно нарисовать вместе с текстом.
Не забудьте добавить поддержку векторов, если вы нацеливаетесь на API <21. Для этого вам необходимо:
-
Добавьте в свой модуль build.gradle (уровень приложения):
android {
vectorDrawables.useSupportLibrary = true.
}
-
Зарегистрируйте делегата в статическом блоке вашей активности:
static {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}