9

ビューまたはボタンが「fill_parent」または「weight」を使用して引き伸ばされている場合、ImageViewまたはImageButtonでビットマップが自動的に拡大縮小されないようにするにはどうすればよいですか?

これは、たとえば、ボタンが等間隔に配置されている画面上部に4ボタンのツールバーを作成する場合に便利ですが、scaleType = "center"を使用しても、ボタン内の画像は引き伸ばされ続けます。ドキュメントに従ってスケーリングしますが、そうではありません。

どんな洞察も大歓迎です!

ありがとう、

4

3 に答える 3

10

Android:background を使用すると、そこで使用している画像がビューのサイズに自動的にスケーリングされることがわかりました。

android:src を使用して画像をビューに入れてみました。画像は拡大縮小されませんでしたが、ビューのサイズに対して画像を中央に配置できませんでした。

そこで、ボタン全体を独自の相対レイアウトにしてみました。これが私が使用したものです。

<RelativeLayout android:id="@+id/RelativeLayout01" 
                android:layout_height="fill_parent" 
                android:layout_width="fill_parent">
                <ImageButton android:id="@+id/ImageButton01"    
                             android:layout_height="fill_parent"
                             android:layout_width="fill_parent"></ImageButton>
                <ImageView android:id="@+id/ImageView01"
                           android:layout_width="wrap_content"
                           android:layout_height="wrap_content" 
                           android:background="@drawable/cardback1" 
                           android:layout_centerInParent="true"></ImageView>
</RelativeLayout>

ImageButton は背景にあり、常にレイアウトと同じサイズになります。ただし、ImageView は常に RelativeLayout の中央に配置され、スケーリングされません。このようにして、RelativeLayout 自体は拡大および移動でき、ボタンの上の画像は常に同じサイズのままですが、ボタンは拡大します。ただし、レイアウトが画像自体よりも小さくなると、画像は縮小されます。

それがあなたが探していたものだと思います。これを行うにはもっと良い方法があるかもしれませんが、これが今思いつくことができるすべてです。

于 2010-03-09T06:50:13.480 に答える
3

ドローアブルを変更するだけで、より大きな透明な背景を適用できます。私の hdpi のドローアブルが 41*48 px icon.png だとします。背景が透明な 60*60 px の新しい画像を作成し、前の icon.png をコピーして貼り付け、同じ名前で保存します。この方法では、レイアウトに手を加える必要はありません。

次に、透明でない android:backgroundを適用すると、ボタン ゾーンを大きく確認できます。

<ImageButton android:id="@+id/widget_open"
android:src="@drawable/icon_widget_arrow_up"
android:background="#ff777777"
android:layout_height="wrap_content"
android:layout_width="wrap_content"></ImageButton>

以前のドローアブルと新しいドローアブルをandroid:srcに適用すると、ImageButton 領域がはっきりと見えるはずです。

ちなみに、互換モードでアプリを実行しています。

于 2012-01-04T10:29:25.103 に答える
2

画像がスケーリングされている場合は、互換モードでアプリを実行していないことを確認してください (たとえば、複数の密度をサポートせずに Android 1.5/1.6 をターゲットにして、Android 2.0 でアプリを実行する場合)。

于 2010-03-09T05:28:37.910 に答える