2013-02-07 10 views
5

セレクタのアイテム要素のドロワブルとして9パッチイメージを使用しています。 9つのパッチ画像はこちらです:9パッチ画像が間違った位置にスケーリングされました

9 patch image

最終的にレンダリングされる画像はこれです(エミュレータ&デバイスのスクリーンショット、両方のデバイス持っている解像度> MDPI):あなたのよう

resulting rendered image

(9パッチファイルで定義されているように)伸縮可能な領域の外側にスケールされているのを見ると、濃い緑色のバーははるかに太くなります。 なぜそれが避けられますか? draw9patchツールは、このイメージを正しくスケーリングします。 Androidは高解像度デバイスの物理的な寸法を維持しようとしていますか?

+0

私たちはあなたがイメージを描画するコードを見てみましょう。 – Caerulius

答えて

6

イメージのmdpiバージョンのみを提供していますか?

Androidは、正しいピクセル密度では利用できないすべての画像を拡大/縮小します。これは、画像が9patchでスケーリングされる前に発生します。

これは、画像がhdpiに合わせて拡大され、コンテンツに合わせて拡大縮小されることを意味します。

これを修正するには、画像のhdpiとxhdpiバージョンを提供する必要があります。 9patchは、異なるピクセル密度とむしろ異なるコンテンツ/スクリーンサイズをターゲットにすることは想定されていません。

+0

バージョンは1つしかありません(ドロウアブルフォルダに入れてください)。だから、私が直面している問題を説明したプロセスが説明しているようです。あまりにも悪いですが、私はそれらの異なる物理的解像度の画像を作成することを避けることはできますが... – user462982

3

私はあなたの9パッチチェックアウト:

enter image description here

なぜあなたは白のあなたの使用されていない境界を色でしたか?透明でなければなりません。このため は、それは9Patchとして認識されていません。

enter image description here

+0

白い枠線は、ほぼ透明なピクセルが外側の枠線上にあることを避けるため、私の個人的なベストプラクティスです。これまでのところ、私はこれに問題はなかった。そして私はこれを二重にチェックしました:赤い縞(彼らが意味するもの)は完全に透明なボーダーでも発生します。 – user462982

関連する問題