0

我有一个Button带有背景的可绘制对象,android:layout_width="wrap_content"并且 android:layout_height="wrap_content". 按钮上没有文字。但是,它的显示大小使得可绘制对象稍微调整大小并且看起来模糊,除非我将宽度和高度设置为可绘制对象的宽度和高度px。我怎样才能wrap_content工作?或者任何其他不涉及硬编码按钮大小的方式,这样当可绘制的大小发生变化时我不需要进行额外的编辑?

这是我的 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>
4

1 回答 1

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 的更新版本。尽管我使用了我的一张图像,但我在您开始使用的按钮上方添加了一个新按钮。特定的图像很长,而且没有那么高。在常规 Button 中,它会拉伸以填充小部件,从而失去视角。在顶部的新 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>
于 2013-03-15T15:37:34.700 回答