Android开关定制左右drawables

Mik*_*e T 13 android android-switch

我正在尝试创建这样的自定义开关:

自定义性别开关

我觉得我需要的是左/右抽屉,每个都是绿色/白色状态,或者是绿色轮廓,带有抽屉,用于选择时.

我不喜欢在帖子明白是所有样本绘制资源如何"打开"按钮,偏到左边提供向右倾斜,然而.

我正在尝试使用以下'拇指'可绘制.

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true"  android:drawable="@drawable/choice_right"/>
    <item                               android:drawable="@drawable/choice_left"/>
</selector>
Run Code Online (Sandbox Code Playgroud)

但它似乎削减了抽签的目的.如果我也设置了这样的轨道:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle" >

        <stroke 
            android:width="1dp" 
            android:color="@color/text_input"/>

        <corners
            android:radius="1dp"
            android:bottomLeftRadius="4.5dp"
            android:bottomRightRadius="4.5dp"
            android:topLeftRadius="4.5dp"
            android:topRightRadius="4.5dp" >
    </corners>
</shape>
Run Code Online (Sandbox Code Playgroud)

然后我得到的只是一条细线.所以,我不确定下一步该尝试什么.

Raj*_*tth 9

这不能单独使用样式,这需要自定义视图实现.这是很多代码,所以我的建议是使用第三方库,如 https://github.com/hoang8f/android-segmented-control 这个库经过试用和测试,因此可以安全地使用它而不是重写它.


Nei*_*eil 6

我已经创建了一个示例应用程序,您可以在此处找到它来解决您的问题.你可以看看这个库,具有分段控制的正确实施.

基本上我创建了一个自定义控件,LinearLayout它以默认值weightSum2 扩展.两个Buttons加上weight1,并且应用了一些逻辑来在它们之间切换.在切换时,将触发基于此接口构建的自定义事件.

public interface SwitchToggleListener {
    void onSwitchToggle(SwitchToggleState switchToggleState);
}
Run Code Online (Sandbox Code Playgroud)

我用drawable资源来设置按钮的样式.

最终结果看起来像这样

在此输入图像描述