7

したがって、4つのボタンがあり、それらはすべて、高さと幅の両方にmatch_parentを使用します。「drawableTop」属性を使用してボタン自体の中に画像を入れたいのですが、解像度ごとに個別の画像を必要としないようにしたいのです。これが私が撮ったポートレートのスクリーンショットです。風景のものは少し来るでしょう。

ボタン-ポートレート

ですから、これは問題ないように見えますが、画像の解像度は4つしかなく、携帯電話で試してみても良い結果は得られませんでした。たとえば「描画可能」で1つの大きな画像を作成し、すべての解像度に収まるように縮小する方法はありますか?そうでない場合、私は何をしなければなりませんか?現在、hdpi、ldpi、mdpi、およびxhdpiをカバーしていますが、すべての境界をカバーしたいと思います。他にどのような密度が存在しますか?

自動サイズ変更を実現できれば、ユーザーによるランドスケープの使用を禁止する必要もありません。

ボタン-風景

また、ここにxmlがあります:

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:baselineAligned="false"
    android:orientation="horizontal" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="vertical"
        tools:ignore="NestedWeights" >

        <Button
            android:id="@+id/bMap"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:drawableTop="@drawable/ic_camera"
            android:text="Button" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="vertical" >

        <Button
            android:id="@+id/bCamera"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:drawableTop="@drawable/ic_camera"
            android:text="Button" />
    </LinearLayout>
</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:baselineAligned="false"
    android:orientation="horizontal" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="vertical"
        tools:ignore="NestedWeights" >

        <Button
            android:id="@+id/bGallery"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:drawableTop="@drawable/ic_camera"
            android:text="Button" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="vertical" >

        <Button
            android:id="@+id/bPlants"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:drawableTop="@drawable/ic_camera"
            android:text="Button" />
    </LinearLayout>
</LinearLayout>

4

2 に答える 2

5

ButtonAFAIK、ドローアブルはビューに合わせて拡大縮小されないため、ドローアブルの背景では簡単に実現できません。

Buttonsをsに変更すれば、それができると思いますImageButton。これにより、画像を拡大縮小するためのオプションが増えます。

ImageButtonクラスは、ImageButtonの境界に収まるように画像を縮小するためにandroid:scaleType使用できる属性を公開します。centerInside

また、の代わりにでImageButton画像を定義する必要があります。android:srcandroid:drawable

ただし、ImageButtonにテキストを設定する方法があるかどうかはわかりません。LinearLayoutのImageViewとTextViewで構成され、そのLinearLayoutをボタンとして扱う(onClickの追加など)、より高度なレイアウトが必要になる場合があります。

于 2012-10-15T19:09:53.687 に答える
0

はい、1つの大きな画像を作成し、すべての解像度に収まるように縮小することができます。この自動サイズ設定はプログラムで実現できます。この答えDroidUtils.scaleButtonDrawablesから見てください。

于 2015-09-09T20:33:15.980 に答える