Android自定义开关被截断/截断

时间:2015-07-30 13:31:42

标签: android android-xml android-switch

我是一个自定义的android开关,它定义如下

<Switch
    android:id="@+id/create_site_switch_ssl"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical|left"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:paddingLeft="50dp"
    android:paddingRight="50dp"
    android:checked="true"
    android:gravity="center_vertical"
    android:thumb="@drawable/btn_gradient" />

以及像这样的拇指选择器项

<item android:state_enabled="true" android:state_focused="false" android:state_pressed="false">
    <shape android:shape="rectangle">    
        <gradient
            android:startColor="@color/Blue100"
            android:endColor="@color/Blue50"
            android:angle="90"/>    
        <padding android:left="@dimen/button_padding"
            android:top="@dimen/button_padding"
            android:right="@dimen/button_padding"
            android:bottom="@dimen/button_padding" />    
        <corners android:radius="@dimen/button_corner"/>    
        <stroke android:color="@color/BlueBorder" android:width="5dp"/>    
    </shape> 
</item>

在Android 4.3版本上,4.4.2开关滑块在左右两侧被切割成这样。

enter image description here

我尝试使用形状和切换填充/边距/大小到目前为止没有任何效果。

使用适当的填充设置自定义曲目也不起作用。

在Android 5.0及更高版本上,问题已通过设置

解决
android:paddingLeft 
android:paddingRight

为什么填充不适用于更高版本?我错过了什么? 欢迎提出解决方案的任何提示!

2 个答案:

答案 0 :(得分:1)

我有同样的问题。从drawable中删除padding属性为我修复了它。在你的情况下,它看起来像这样:

<item android:state_enabled="true" android:state_focused="false" android:state_pressed="false">
    <shape android:shape="rectangle">    
        <gradient
            android:startColor="@color/Blue100"
            android:endColor="@color/Blue50"
            android:angle="90"/>    
        <corners android:radius="@dimen/button_corner"/>    
        <stroke android:color="@color/BlueBorder" android:width="5dp"/>    
    </shape> 
</item>

然后您可以将填充添加到交换机:

<Switch
    android:id="@+id/create_site_switch_ssl"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical|left"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:paddingLeft="50dp"
    android:paddingRight="50dp"
    android:checked="true"
    android:drawablePadding="@dimen/button_padding"
    android:gravity="center_vertical"
    android:thumb="@drawable/btn_gradient" />

答案 1 :(得分:0)

我知道这已经晚了,但这适用于其他有同样问题的人。对我来说,解决方案是设置负填充。因此,如果您的开关在右侧被切断,则将右侧填充设置为负数,例如-5或-10,具体取决于切换的切换器的数量。