2017-01-30 15 views
1

ImageButtonは、高さが固定されていて、元の画像の比率に応じてどのくらいの幅になるのですか?ImageButtonのパディングを削除します

私は次のことを試してみました:

<ImageButton 
    android:layout_width="wrap_content" 
    android:layout_height="8pt" 
    android:minWidth="0pt" 
    android:scaleType="fitCenter" 
    android:adjustViewBounds="true" 
    android:src="@drawable/list_download" 
    android:background="@android:color/black" 
    android:padding="0pt"/> 

私はまさにそれの境界を確認するために黒に背景を設定し、hereは結果です。

ネガティブパディングを使用することを提案するいくつかの解決策を見ましたが、それは優雅な解決策ではありません。より良いものがあるはずです。

ImageViewでも同様の設定を試みましたが、余分な埋め込みもありました。したがって、具体的な問題はではありません(つまり、this 9パッチの問題とは関係ありません)。

編集:scaleTypefitCenterからfitStartに変更すると、結果はthisのようになります。だから最低限の幅がある。

+0

左右のパッドを意味しますか? –

+0

@Rod_Algonquinはい。左と右の「フィットセンター」の場合。 'fitStart'では、右だけです。 – ram

+0

これは、ベクトルxmlイメージを使用することで解決できます。xmlイメージ内のイメージの幅と高さを指定することができます(簡単です)。ベクトルはスケーラブルであるため、スケーリングする必要はありません。 –

答えて

0

あなたはそうのようなフレームにそれを置くことができます。

<FrameLayout 
    android:layout_width="wrap_content" 
    android:background="@android:color/black" 
    android:layout_height="wrap_content"> 

    <ImageView 
     android:src="@drawable/list_download" 
     android:scaleType="fitCenter" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:layout_width="8dp"/> 
</FrameLayout> 

そう

+0

これは余分なパディング問題を解決しません。 'FrameLayout'と' ImageView'の両方でパディングをゼロに設定しても、まだパディングがあります。 – ram

1

あなたは限られた高さを設定しているためですようにそれで遊ぶのがはるかに簡単になります。これにより画像の高さが制限されますが、Androidがコンテンツの幅(元の未調整画像)を計算すると、Androidの幅が広がります。

高さにもwrap_contentを使用すると、側面に黒い「パディング」のないイメージが表示されます。

<ImageButton 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:minWidth="0pt" 
android:scaleType="fitCenter" 
android:adjustViewBounds="true" 
android:src="@drawable/list_download" 
android:background="@android:color/black" 
android:padding="0pt"/> 

画像を特定のサイズにするには、描画可能なフォルダ内の画像を目的のサイズにリサイズすることができます。

+0

質問のコメントに書いたように、1つの次元(幅または高さ)のみを設定して、アンドロイドがもう一方の次元を適切に計算させるようにします。あなたが言ったように、ボタンはイメージよりも広いです。どうして?その幅は 'wrap_content'なので、なぜ画像より広いのですか?これは私の問題です。 – ram

+0

私は投稿される前にコメントを見ませんでした、申し訳ありません。イメージボタンは、画面に表示されるイメージよりも幅が広くなりますが、_元のdrawable/image_の_幅を持っています。あなたの問題を解決します。 静的な高さや幅を指定するだけでイメージを拡大/縮小する方法はわかりません。しかし、私はそれが可能であると確信しています。レイアウトの代わりにコード内でいつでも実行できます。 – larseknu

+0

"...でも元のドロワブル/イメージの正確な幅を持っています。"残念ながらこれは間違っていますが、それは私が期待していたものです。 'wrap_content'が意味するものよりも広いです。 (ちょうど助言として、画像自体には 'fitStart'の場合のように、余分なパディングは含まれていません。) – ram

関連する問題