2014-04-25 13 views
8

Posso creare una forma di testo in una risorsa estraibile? ero googling molto ma non trovò nulla ... Ecco il mio file di disegnabile:Testo con forme nella risorsa estraibile

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

risposta

3

No, non è possibile farlo. Tuttavia, perché non impostare lo Drawable come sfondo per un TextView e quindi semplicemente impostare il testo nello TextView, che verrà visualizzato sopra gli altri livelli del tuo Drawable?

+17

Perché non utilizzare un TextView? Perché forse OP vuole usare il testo in uno splash screen, che richiede una risorsa drawable, non una risorsa di layout. – zyamys

+0

Oppure potrebbero voler usare il drawable con TransitionDrawable che include del testo in modo che la dissolvenza incrociata transiti lo sfondo con un testo. È possibile passare a un'immagine, ma ciò vanifica l'uso di un elenco di livelli disegnabile. – garlicman

+0

@zyamys Quale sarebbe il tuo suggerimento nello scenario che hai menzionato sopra, cioè il testo nella schermata iniziale che richiede risorse disegnabili? – user846316

1

È possibile utilizzare il vettore drawable invece (ad esempio convertendo dal file svg).
Quindi utilizzare il vettore come uno dei livelli.
Ciò consente di creare un singolo drawable senza TextViews, in modo da poterlo utilizzare facilmente come windowBackground nel tema della schermata iniziale.

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

Dove ic_splash_text - è un disegnabile vettore con il testo.

Non dimenticare di aggiungere vettori di supporto se si are4 mira su API < 21. Per questo è necessario:

  1. Aggiungi al modulo build.gradle (app-livello):

    android {
    vectorDrawables.useSupportLibrary = true.
    }

  2. Registrati delegato in un blocco statico della vostra attività:

    statica {
    AppCompatDelegate.setCompatVectorFromResourcesEnabled (true);
    }

Problemi correlati