1

我想将TextViewAndroid 项目中标准的背景设置为自定义形状。形状定义如下:

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

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

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);

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

4

2 回答 2

1

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

于 2011-03-21T13:37:54.450 回答
0

CenterX 和 centerY 应该是整数。此页面很好地列出了所有参数将采用的内容。

于 2011-03-21T13:38:15.217 回答