带有可绘制资源中的形状的文本

Posted

tags:

篇首语:本文由小常识网(cha138.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>
答案

不,你不能这样做。一个想法是将Drawable设置为TextView的背景,然后简单地在TextView中设置文本,这将出现在Drawable的其他层之上。当然,这不能用于启动画面,这需要zyamys在下面的评论中提到的可绘制资源。对于这种情况的想法是使用您感兴趣的文本生成静态图像。遗憾的是,这不包括文本是动态的情况。

另一答案

您可以使用矢量drawable(例如通过从svg文件转换)。 然后使用矢量作为其中一个层。 这使您可以在没有任何TextView的情况下创建单个drawable,因此您可以轻松地将其用作初始屏幕主题中的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(app-level): android { vectorDrawables.useSupportLibrary = true. }
  2. 在您的活动的静态块中注册委托: static { AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); }

以上是关于带有可绘制资源中的形状的文本的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中改变可绘制形状的颜色

使用 Core Graphics 绘制带有减去文本的路径

可绘制形状上的 setCompoundDrawables 无效

Android L 忽略形状作为可绘制背景

android圆角textview,角落里有完美的圆角

形状可绘制为背景,底部有一条线