2

円の背景画像 .png を持つ画像ボタンがあります。さまざまな解像度の画面でテストしていますが、画面ごとに異なって見えます。それらのほとんどは、円の形状を 1 次元に引き伸ばすことによって歪めます。

これを処理する正しい方法は何ですか? 最高品質の画像に必要な 3 つの密度レベルに精通していますが、問題は画像ボタン自体または親コンテナーのいずれかのレイアウト タイプ属性にあると思います。

main.xml からのスニペット...

<LinearLayout
    android:id="@+id/buttonArea"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:orientation="vertical"
    android:padding="30dp">

    <ImageButton
        android:id="@+id/button1"
        android:background="@drawable/button_inactive"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_gravity="center"/>

</LinearLayout>

ImageButton から layout_weight 属性を削除すると、ほとんどのケースが修正されましたが、すべてではありませんでした。パディングはまだ円の比率を変えているようです。スケール タイプは効果がありません。私の画像がsrcではなく背景として設定されているためですか?

4

2 に答える 2

3

ImageButton の android:layout_weight="1" が原因だと思います。画面のサイズに関係なく、ImageButton を画面と同じサイズにします。

その属性を削除してみてください。それでも問題が解決しない場合は、android:scaleType属性を確認してください。

<ImageButton
    android:id="@+id/button1"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    android:layout_gravity="center"
    android:background="@null"
    android:src="@drawable/button_inactive"
    android:scaleType="centerInside"/>
于 2011-12-20T20:31:27.223 に答える
2

ImageView のscaleType属性を、画像の縦横比を維持するものに設定できます。それらはすべてわずかに異なる動作をするため、ニーズに合ったものを使用する必要があります (CenterInside は最初に使用するのに適しています)。

これが機能しない場合は、いつでも画像の高さ/幅を指定できます (例: layout_width="128dp)。

于 2011-12-20T20:33:29.683 に答える