设置背景图像,使其不调整大小(像素完美)

时间:2013-03-15 15:15:16

标签: android android-layout android-ui

我有一个Button,背景为drawable android:layout_width="wrap_content"android:layout_height="wrap_content"。按钮上没有文字。但是,除非我将宽度和高度设置为px中的drawable的宽度和高度,否则它的显示大小会使drawable的大小调整一些并且看起来很模糊。如何让wrap_content工作?或者任何其他不涉及硬编码按钮大小的方式,这样当drawable的大小发生变化时我不需要进行额外的编辑?

这是我的XML:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" xmlns:tools="http://schemas.android.com/tools">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="3dp"
            android:paddingTop="3dp" >

            <Button
                android:id="@+id/btn"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/btn" />

        </RelativeLayout>
    </LinearLayout>

</ScrollView>

1 个答案:

答案 0 :(得分:1)

使用ImageButton代替常规Button。它可以访问属性android:src并将图像设置在那里,而不是作为背景。背景图像始终适合填充,其中“源”属性通过android:scaleType属性控制图像大小调整。请参阅:http://developer.android.com/reference/android/widget/ImageButton.htmlhttp://developer.android.com/reference/android/widget/ImageView.html#attr_android:scaleType

注意,对于您的ImageButton,您还需要确保android:background="@null",否则您将看到源图像背后的默认按钮图像。

编辑:

以下是XML的更新版本。我添加了一个新按钮,在你开始使用的按钮上方,虽然我使用了我的一个图像。特定的图像很长而且不那么高。在常规按钮中,它会延伸以填充小部件,从而失去视角。在新的ImageButton中,它保持了它的视角。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" xmlns:tools="http://schemas.android.com/tools">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="3dp"
            android:paddingTop="3dp" >

            <ImageButton
                android:id="@+id/new_btn"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@null"
                android:scaleType="fitCenter"
                android:src="@drawable/postwall" />

            <Button
                android:id="@+id/btn"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@id/new_btn"
                android:background="@drawable/postwall" />

        </RelativeLayout>
    </LinearLayout>

</ScrollView>