7

所以我有四个按钮,它们都使用 match_parent 作为高度和宽度。我使用“drawableTop”属性在按钮本身中有图像,我想这样做,所以我不需要为每个分辨率单独的图像。这是我拍的肖像截图。景观会出现一点。

按钮-纵向

所以这看起来不错,但我只有 4 种不同的图像分辨率,在我的手机上试用它们并没有产生积极的结果。有什么办法可以让我只拥有一个更大的图像,比如“可绘制”并让它缩小以适应所有分辨率?如果没有,我该怎么办?我目前涵盖 hdpi、ldpi、mdpi 和 xhdpi,但我想涵盖所有范围。还存在哪些其他密度?

如果我可以实现自动调整大小,我也不必禁止用户使用 Landscape:

按钮-横向

另外,这是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

AFAIK,使用可绘制背景并不容易Button,因为可绘制不会随视图缩放。

我相信如果您将Buttons更改为ImageButtons,您可以做到这一点,它提供了更多缩放图像的选项。

ImageButton 类公开了android:scaleType属性,您可以使用它centerInside来缩小图像以适应 ImageButton 的边界。

此外,ImageButton您应该使用android:src而不是定义图像android:drawable

我不确定是否有办法在 ImageButton 上设置文本。您可能需要一个更高级的布局,由 LinearLayout 中的 ImageView 和 TextView 组成,然后将该 LinearLayout 视为按钮(添加 onClick 等)。

于 2012-10-15T19:09:53.687 回答
0

是的,您可以拥有一张更大的图像并将其缩小以适应所有分辨率。您可以通过编程方式实现此自动调整大小。看看这个答案DroidUtils.scaleButtonDrawables

于 2015-09-09T20:33:15.980 回答