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

しかし、私が言ったように、これは同じエラーになります...シェイプをロードしようとするとエラーが発生することはわかっていますが、問題は理由がわからないことです...だから誰かがこれについて私に助けを与えることができます1?それほど多くのコードが含まれていないので、それは些細な間違いであるに違いありません...

4

2 に答える 2

1

XMLファイルに属性を追加するのを忘れたようです。属性はでしたandroid:gradientRadius="180"。この属性を追加することにより、グラデーションが正しく描画されていました。user639183に感謝します!

于 2011-03-21T13:37:54.450 に答える
0

CenterXとcenterYは整数であると想定されています。このページには、すべてのパラメーターが取るものの良いリストがあります。

于 2011-03-21T13:38:15.217 に答える