Подтвердить что ты не робот

Текст с фигурами в ресурсе

Могу ли я создать текстовую форму в ресурсе с возможностью рисования? Я много гулял, но ничего не нашел... Вот мой доступный файл:

<?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>
4b9b3361

Ответ 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. Для этого вам необходимо:

  1. Добавьте в свой модуль build.gradle (уровень приложения):

    android {        
        vectorDrawables.useSupportLibrary = true.    
    }  
    
  2. Зарегистрируйте делегата в статическом блоке вашей активности:

    static {  
        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);   
    }