图像设置为切换按钮的背景是拉伸android

时间:2015-08-18 04:22:07

标签: android android-layout

我有一个切换按钮:

<ToggleButton
            android:id="@+id/tv_pmpSwitch"
            android:layout_width="0dp"
            android:layout_weight="0.1"
            android:layout_height="wrap_content"
            android:background="@drawable/toggle_view"
            android:layout_gravity="center_vertical"
            android:gravity="center"
            android:textOn=""
            android:textOff=""
            android:focusable="false"
            android:focusableInTouchMode="false"
            android:layout_centerVertical="true"
            android:paddingTop="16dp"
            android:layout_marginLeft="16dp"
            /> 


我的toggle_view drawable是:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- When selected, use grey -->
    <item android:drawable="@drawable/ic_list_action"
        android:state_checked="true" />
    <!-- When not selected, use white-->
    <item android:drawable="@drawable/ic_grid_action"
        android:state_checked="false"/>
</selector>


我不明白为什么背景中的图像被拉伸?我尝试了各种尺寸的图像。

3 个答案:

答案 0 :(得分:8)

<ToggleButton
            android:id="@+id/tv_pmpSwitch"
            android:layout_width="0dp"
            android:layout_height="28dp"
            android:layout_weight="0.1"
            android:background="@drawable/toggle_view"                
            android:textOff=""
            android:textOn="" />

在您的代码上尝试此操作并仅调整布局高度参数!

修改

获取非拉伸图像的方法是使用位图而不是可绘制的。 使用以下作为您的背景xml。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item >
        <bitmap android:src="@drawable/ic_list_action"
          android:gravity="center_vertical|left" />
    </item>
    <item>
        <bitmap android:src="@drawable/ic_grid_action"
          android:gravity="center_vertical|left" />
    </item>
</layer-list>

答案 1 :(得分:4)

您可以在xml布局文件中进行简单设置:

android:minWidth="0dp"
android:minHeight="0dp"

图像不再拉伸

答案 2 :(得分:1)

在尝试了一些事情后,我发现了什么是错的:
weightSum是罪魁祸首,指定的重量正在拉伸图像。

<LinearLayout
            android:layout_width="0dp"
            android:layout_weight="0.1"
            android:layout_height="wrap_content">
        <ToggleButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tv_pmpSwitch"
            android:background="@drawable/ic_toggle_list"
            />
        </LinearLayout>

将整个代码放入LL父级中就可以了解