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

Ans*_*oid 4 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"
            /> 
Run Code Online (Sandbox Code Playgroud)


我的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>
Run Code Online (Sandbox Code Playgroud)


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

Ans*_*Ali 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="" />
Run Code Online (Sandbox Code Playgroud)

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

编辑

获取非拉伸图像的方法是使用位图而不是drawable.使用以下作为您的背景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>
Run Code Online (Sandbox Code Playgroud)


Yon*_*Nir 7

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

android:minWidth="0dp"
android:minHeight="0dp"
Run Code Online (Sandbox Code Playgroud)

图像将不再拉伸


Ans*_*oid 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>
Run Code Online (Sandbox Code Playgroud)


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