web-dev-qa-db-ja.com

ドローアブルリソースに図形を含むテキスト

ドローアブルリソースでテキスト形状を作成できますか?私はたくさんググっていましたが何も見つかりませんでした...これが私の描画可能なファイルです:

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

いいえ、できません。 1つのアイデアは、DrawableTextViewの背景として設定し、TextViewにテキストを設定することです。これは、Drawable。もちろん、これはスプラッシュスクリーンには使用できません。スプラッシュスクリーンには、以下のコメントの zyamys で言及されているように、ドローアブルリソースが必要です。その場合のアイデアは、興味のあるテキストで静的な画像を生成することです。これは、残念ながら、テキストが動的である場合には適用されません。

10
BVB

代わりにベクタードローアブルを使用できます(SVGファイルから変換するなど)。
次に、ベクターをレイヤーの1つとして使用します。
これにより、TextViewsなしで単一のドローアブルを作成できるため、スプラッシュスクリーンテーマのwindowBackgroundとして簡単に使用できます。

<?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);   
    }    
    
4
Leo Droidcoder