- Date: Wed 05 12 2012
- Category: Android
- Response: Comment 0 Trackback 0
drawableのshape/cornersの不具合
android の shape タグを用いた描画に、Android 3.0 (API 11) 以下では <corners> タグの下部の設定が左右逆となる不具合があります。
以下の参考サイトでは Android 2.3.3 (API 10) 以下になってましたが、エミュレータで確認したところ Android 3.0 (API 11) 以下で問題が発生しました。
Android 3.1 (API 12) 以降は正常に動作します。
【参考サイト】
CEED - androidのshapeのバグ
shape タグに関しては以下のサイトがわかりやすかったです。
TechBooster - shapeタグを使ってボタンの背景色をグラデーションにする
【現象】

設定は上から順に
<corners android:topLeftRadius="10dp" />
<corners android:topRightRadius="10dp" />
<corners android:bottomRightRadius="10dp" />
<corners android:bottomLeftRadius="10dp" />
としているが android:bottomRightRadius と android:bottomLeftRadius が逆に表示されてしまう。
【対処法】
resフォルダに drawable-v12 フォルダを追加します。

追加した drawable-v12 フォルダに正しい方の XML ファイルを入れます。
通常の drawable フォルダには android:bottomRightRadius と android:bottomLeftRadius を逆にしたXMLファイルを入れます。
※ XML ファイル名は同じです
こうすることで、すべてのデバイスで以下のように正しく表示されるようになります。

不具合対応のために余計なファイルを作るのは嫌ですね…
Android 開発チームは作ってるときに気づかなかったんでしょうか…
以下の参考サイトでは Android 2.3.3 (API 10) 以下になってましたが、エミュレータで確認したところ Android 3.0 (API 11) 以下で問題が発生しました。
Android 3.1 (API 12) 以降は正常に動作します。
【参考サイト】
CEED - androidのshapeのバグ
shape タグに関しては以下のサイトがわかりやすかったです。
TechBooster - shapeタグを使ってボタンの背景色をグラデーションにする
【現象】

設定は上から順に
<corners android:topLeftRadius="10dp" />
<corners android:topRightRadius="10dp" />
<corners android:bottomRightRadius="10dp" />
<corners android:bottomLeftRadius="10dp" />
としているが android:bottomRightRadius と android:bottomLeftRadius が逆に表示されてしまう。
【対処法】
resフォルダに drawable-v12 フォルダを追加します。

追加した drawable-v12 フォルダに正しい方の XML ファイルを入れます。
通常の drawable フォルダには android:bottomRightRadius と android:bottomLeftRadius を逆にしたXMLファイルを入れます。
※ XML ファイル名は同じです
こうすることで、すべてのデバイスで以下のように正しく表示されるようになります。

不具合対応のために余計なファイルを作るのは嫌ですね…
Android 開発チームは作ってるときに気づかなかったんでしょうか…
スポンサーサイト