注: これをバグとして Android プロジェクトに報告しました: http://code.google.com/p/android/issues/detail?id=39159また、承認された報奨金の回答、残念ながら、解決策は、絶対的な (つまり、「wrap_content」ではなく「dp」などを指定する) レイアウトを使用して問題を解決することです。
画像に背景を配置すると、非常に奇妙な動作が発生します。問題を説明するために、これをかなり単純化しました。私がしているのは、画像を相対レイアウトに配置し、背景も使用することです。relativelayout にパディングを指定すると、画像の背景が誤って描画されるようです。Wrap_content がおかしくなっているようです。
まず、問題を示すコードを次に示します。linearlayout を使用せずにイメージビューに背景を与えるだけで同じ動作が見られることに注意してください。ただし、これは問題をよりよく示しています。
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="60dp"
android:padding="5dp" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/black_bg" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:src="@drawable/red_rectangle" />
</LinearLayout>
</RelativeLayout>
</FrameLayout>
black_bg xml ファイルは次のとおりです。
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FF000000"/>
</shape>
red_rectangle は次のとおりです。
これは、問題を示すための参照イメージであることに注意してください。私の実際の画像には詳細があるため、.9.png にすることはできません
そして、ここに問題のスクリーンショットがあります:
linearlayout の幅が「wrap_content」に設定されているにもかかわらず、画像の幅が linearlayout よりも小さいことがわかります。relativelayout パディングを 0dp に設定すると、この問題はなくなります。
これは私がここで提供しているリソースのかなり充実したセットであることを願っています。
参考までに、これを使用して画像の周囲に境界線を提供しているため、linearlayout (または画像自体) にパディングを設定できますが、その場合でも問題は解決しません。
編集:この境界線を提供する方法に焦点を当てているため、おそらくこれについてもう少しコンテキストが必要なようです。これは、よりコンテキストに応じたレイアウトのスクリーンショットです。問題をさらに混乱させるため、最初にこれを含めたくありませんでした。
最初に表示される 5 dp のパディングは、このアイテム全体のコンテンツ (relativelayout) 用です。次に、最初に言ったように、relativelayout に表示される最初のパディングに加えて、「linearlayout (または画像自体) にパディングを設定することができる」という考えです。現在、このレイアウトには境界線が表示されていません。