2014-04-25 10 views
8

Kann ich Text-Form in ziehbar Ressource erstellen? ich viel wurde googeln, aber nichts gefunden ... Hier ist meine ziehbar Datei:Text mit Formen in ziehbar Ressource

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

Antwort

3

Nein, Sie können nicht so tun. Aber warum nicht die Drawable als Hintergrund für ein TextView gesetzt und dann einfach eingestellt Text in den TextView, die über den anderen Schichten der Drawable erscheinen?

+17

Warum nicht eine TextView verwenden? Weil OP vielleicht Text in einem Begrüßungsbildschirm verwenden möchte, der eine zeichnende Ressource erfordert, keine Layout-Ressource. – zyamys

+0

Oder sie könnten die ziehbar mit einem TransitionDrawable, die einen Text enthält verwenden möchten, so dass die Cross-Fade den Hintergrund mit einigen Formulierungen übergeht. Sie könnten zu einem Bild wechseln, was jedoch die Verwendung einer zeichnungsfähigen Ebenenliste verhindert. – garlicman

+0

@zyamys Was wäre Ihr Vorschlag in dem oben erwähnten Szenario, d. H. Text im Begrüßungsbildschirm, der eine ausklappbare Ressource erfordert? – user846316

1

können Sie Vektor ziehbar verwenden, anstatt (sagen wir von aus dem SVG-Datei konvertieren).
Dann verwenden Sie Vektor als eine der Ebenen.
Auf diese Weise können Sie einen einzelnen ziehbar ohne Textviews erstellen, so können Sie es leicht als windowBackground verwenden in Ihrem Thema Splash-Screen.

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

Wo ic_splash_text - ein Vektor ziehbar mit dem Text ist.

Nicht vergessen Vektoren hinzufügen unterstützen, wenn Sie auf API < 21. Dazu müssen Sie sind4 Targeting:

  1. in Ihre Modul build.gradle (app-Ebene):

    android {
    vectorDrawables.useSupportLibrary = true.
    }

  2. Register Delegat in einem statischen Block Ihrer Aktivität:

    static {
    AppCompatDelegate.setCompatVectorFromResourcesEnabled (true);
    }