2011-03-21 14 views
1

我想将Android项目中的标准TextView的背景设置为自定义形状。形状被限定如下:尝试将自定义形状设置为小部件的背景时出错

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle" > 

    <gradient android:type="radial" 
       android:angle="90" 
       android:startColor="#FF1EFFFF" 
       android:endColor="#B01E90FF" 
       android:centerColor="#201E90FF" 
       android:centerX="0.5" 
       android:centerY="1.0" /> 

</shape> 

我试图通过调用的TextView的setBackgroundResource()方法来设置自定义形状。

TextView main = (TextView) findViewById(R.id.mainTextView); 
main.setBackgroundResource(R.drawable.gradient); 

然而,当我不是一个真正的设备上或在Android模拟器部署该项目,也不会启动,并显示以下错误:

ERROR/AndroidRuntime(4369): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.android.gradienttest/org.android.gradienttest.MainActivity}: android.view.InflateException: Binary XML file line #7: Error inflating class <unknown>

试图设置绘制首先将它作为形状导致相同的错误。 通过得到它的形状我的意思是:

Resources res = getResources(); 
Shape shape = res.getDrawable(R.drawable.gradient); 

但正如我所说,这导致了同样的错误......我知道当我尝试加载形状它给人的错误,但问题是我不知道为什么...所以有人可以给我一些帮助吗?它必须是一个微不足道的错误,因为涉及的代码并不多......

+1

你抛出的异常说你的xml是错误的,并且在第7行有一个错误,确保你正确地使用了渐变属性。 – ernazm 2011-03-21 13:29:43

+0

我以为我有,但我会再次检查他们... – ThaMe90 2011-03-21 13:35:11

回答

1

看来我忘了给我的XML文件添加一个属性。该属性是android:gradientRadius="180"。通过添加此属性,渐变正在绘制正确。谢谢user639183!

+0

不客气:)不要忘记接受你的回答 – ernazm 2011-03-21 13:39:08

+0

我会在2天内:P – ThaMe90 2011-03-21 13:40:45

0

CenterX和centerY应该是整数。 This page已经很好地列出了所有的参数。

+0

这可能是这样,但在他们的例子较低在页面上,他们指定你必须使用0到1.0之间的数字(浮点数)。此外,我用这个页面开始... – ThaMe90 2011-03-21 13:40:24

+0

你说得对,很好。 – FoamyGuy 2011-03-21 13:42:57

+0

我实际上看了几秒钟,认为“糟糕的Android开发者......” – ThaMe90 2011-03-21 13:46:59

相关问题