带有可绘制资源中的形状的文本
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,请不要忘记添加矢量支持。为此你必须:
- 添加到您的模块build.gradle(app-level):
android { vectorDrawables.useSupportLibrary = true. }
- 在您的活动的静态块中注册委托:
static { AppCompatDelegate.setCompatVectorFromResourcesEnabled(true); }
以上是关于带有可绘制资源中的形状的文本的主要内容,如果未能解决你的问题,请参考以下文章