16

Draw 9-patchでは、すべてが正常に見えます。ただし、私のSDKは、9パッチpngの形式が正しくないと言っています。私は11パッチのpngのようなものを持っているからです。小さなつかむ領域を拡大縮小したくないからです。それを機能させる方法は?スクリーンショットはすべてを説明しています。

代替テキスト

コンソールのエラーメッセージ:

ERROR: 9-patch image /res/drawable-hdpi/top_complete.9.png malformed.
        Can't have more than one marked region along edge.
        Found at pixel #10 along bottom edge.
ERROR: Failure processing PNG image /res/drawable-hdpi/top_complete.9.png
4

7 に答える 7

33

あなたの問題は、コンテンツ領域を許可されていない 2 つの部分に分割していることだと思います。上と左の境界線は、ツールによって下と右の境界線とは異なる方法で処理されます。上と左は伸縮可能なものを表し、下と右はコンテンツ領域 (連続している必要があります) を定義します。

チェックボックスをオンにしてコンテンツ領域を表示し、それを操作して、私が話していることを確認してください。

代替テキスト

于 2010-09-17T07:56:39.107 に答える
1

左右に分割するのではなく、9パッチの==を削除し、これを中心重力と下部重力の別々の画像として使用して、常に希望の中央に留まるようにします。

ヒント:最小化された画像を取得するために、常に「スケーリングされた」部分を1ピクセルの幅/高さに減らします。

于 2010-09-17T09:33:34.513 に答える
1

代替テキスト

グラバーなしの 9 パッチ PNG

代替テキスト

ボタンの XML:

<Button
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:textColor="#FFFFFF"
  android:textStyle="bold"
  android:textSize="11sp"
  android:id="@+id/ButtonTop"
  android:background="@drawable/top_just_bg"
  android:drawableBottom="@drawable/top_dropper"
  android:gravity="center"
  android:paddingLeft="15sp"
  android:paddingRight="15sp"
  android:paddingTop="3sp"
  android:text="There we go! It's working... ;)"></Button>

Padding と sp-Values の使用は問題ありませんか?

于 2010-09-17T11:49:33.227 に答える
1

元の問題はまだ解決されていないため、画像を 2 つのレイヤーに分割することができますNinePatchDrawable。次に、 a を使用しLayerDrawableてそれらを重ね合わせます。適切なタグの使用方法の良い例を次に示します<layer-list>それが正しい方法です。;-)

于 2010-09-17T19:06:45.980 に答える
0

元の画像を2つに分割し、それらを使用します。

于 2010-09-17T07:40:23.407 に答える
0

上の画像は問題ないように見えますが、プレビューを見ると問題ないように見えます。

デバイスを使用しようとすると、デバイスからどのようなエラー メッセージが表示されますか?

エッジのすべてのピクセルが完全に白または黒であると確信していますか?
エッジのわずかな透過性でさえ、Android を混乱させる可能性があります。


編集:
ああ、エラーメッセージが問題を明らかにしています。イメージの上端
のみが、引き伸ばされる領域を決定します

下端の黒いピクセルを削除します。これは、内部にコンテンツ (テキストなど) を持たない単なるグラブ バーであると想定します。

それ以外の場合は、下端の中央の隙間を埋めるだけで、テキスト コンテンツが紫色の領域に表示されます。

于 2010-09-17T07:55:00.730 に答える