2014-04-25 41 views
8

Çizilebilir bir kaynakta metin şekli oluşturabilir miyim?Çizilebilir kaynakta şekiller içeren metin

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

cevap

3

Hayır, bunu yapamaz: Ben burada ... çok googling başka bir şey bulunamadı benim çekilebilir dosyasıdır. Ancak, neden Drawable değerini TextView için arka plan olarak ayarlamıyorsunuz ve TextView'daki metni Drawable ürününüzün diğer katmanlarının üstünde görüntülenecek şekilde ayarlıyorsunuz?

+17

Neden TextView kullanmıyorsunuz? Çünkü belki de OP bir metin ekranda bir düzen kaynağı değil, çekilebilir bir kaynak gerektiren bir metin kullanmak ister. – zyamys

+0

Veya bir metni içeren bir TransitionDrawable ile çekilebilir kullanmak isteyebilirsiniz, böylece çapraz solma bazı ifadeler ile arka plana geçiş yapar. Bir görüntüye geçiş yapabilirsiniz, ancak bu çekilebilir bir katman listesi kullanımını bozar. – garlicman

+0

@zyamys Yukarıda bahsettiğiniz senaryodaki öneriniz ne olurdu, yani çekilebilen kaynak gerektiren açılış ekranındaki metin nedir? – user846316

1

Bunun yerine, vektör çizimini kullanabilirsiniz (svg dosyasından dönüştürerek söyleyin).
Ardından, vektörlerden birini katmanlardan biri olarak kullanın.
Bu, herhangi bir TextViews olmadan tek bir çizim oluşturabilmenizi sağlar, böylece bunu splash screen temanızda windowBackground olarak kullanabilirsiniz. metin ile bir vektör çizilebilir öğesidir - ic_splash_text

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

.

değil Mecbur Bunun için API < 21. üzerine hedefleme are4 eğer vektörler destekleyen eklemeyi unutmayın:

  1. sizin modül build.gradle ekle (uygulama düzeyinde):

    android {
    vectorDrawables.useSupportLibrary = true.
    } etkinlik statik bloğunda

  2. Kayıt temsilci: (true)

    statik {
    AppCompatDelegate.setCompatVectorFromResourcesEnabled;