我可以在可绘制资源中创建文本形状吗? 我在谷歌上搜索但没有发现任何东西...... 这是我的可绘制文件:
<?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>
答案 0 :(得分:7)
不,你不能这样做。一个想法是将Drawable
设置为TextView
的背景,然后只需在TextView
中设置文本,该文本将显示在Drawable
的其他图层上方。当然,这不能用于启动画面,这需要zyamys在下面的评论中提到的可绘制资源。对于这种情况的一个想法是使用您感兴趣的文本生成静态图像。遗憾的是,这不包括文本是动态的情况。
答案 1 :(得分:3)
您可以使用矢量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&lt; 21,请不要忘记添加矢量支持。 为此你必须:
添加到您的模块build.gradle(app-level):
android {
vectorDrawables.useSupportLibrary = true.
}
在您的活动的静态块中注册委托:
static {
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}