首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Android中实现三向滑动按钮

如何在Android中实现三向滑动按钮
EN

Stack Overflow用户
提问于 2012-03-19 20:30:15
回答 4查看 3.3K关注 0票数 7

我想为我的应用程序实现一个三向滑动按钮。在第一个位置它应该显示一种颜色,在中心它应该显示另一种颜色,在结束位置它应该再次改变颜色。在这里,我给出了这些图像。

我如何实现这一点?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-03-19 21:33:54

这实际上看起来像是搜索栏的一个扩展。

为了实现这种滑块,我会创建一个扩展搜索栏的类。在构造函数中,我将使用.setMax(2);,这意味着搜索栏只有3个位置/步骤。

然后,在默认实现中,我会插入一个seekbar.OnChangeListener()。在pogressChanged(...)方法中,使用.setBackgroundDrawable(...)切换背景图像资源,如果需要,使用.setThumb(...)将拇指更改为您想要的图像。

如果您甚至想要更改滑块的位置,您可以实现一个单击事件处理,然后使用.setProgress();更改滑块的位置

这是一个非常容易处理和快速完成的实现,因为它只需要几行代码。

票数 8
EN

Stack Overflow用户

发布于 2017-11-28 18:19:24

这可以使用RadioGroup来实现。

您必须在RadioGroup中定制RadioButtons,如下所示:

代码语言:javascript
复制
<RadioGroup
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/background_toggler"
    android:orientation="horizontal"
    android:padding="4dp">

    <RadioButton
        android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/button1_background"
        android:button="@null"
        android:checked="true" />

    <RadioButton
        android:id="@+id/btn2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/button2_background"
        android:button="@null"
        android:checked="false" />

    <RadioButton
        android:id="@+id/btn3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/button3_background"
        android:button="@null"
        android:checked="false" />

</RadioGroup>

drawable/button1_background.xml .xml

代码语言:javascript
复制
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@drawable/btn1checked"
        android:state_checked="true" />
    <item
        android:drawable="@drawable/btn1unchecked"
        android:state_checked="false" />
</selector>

drawable/button2_background.xml .xml

代码语言:javascript
复制
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@drawable/btn2checked"
        android:state_checked="true" />
    <item
        android:drawable="@drawable/btn2unchecked"
        android:state_checked="false" />
</selector>

drawable/button3_background.xml .xml

代码语言:javascript
复制
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@drawable/btn3checked"
        android:state_checked="true" />
    <item
        android:drawable="@drawable/btn3unchecked"
        android:state_checked="false" />
</selector>

所有3个按钮都使用相关的可绘制资源。现在,您可以处理RadioGroup检查更改时的事件。

票数 2
EN

Stack Overflow用户

发布于 2012-03-19 21:13:36

创建一个新视图并覆盖onPaint()方法。

在A、B或C位置(最左、最中、最右)绘制“滑块”位图,然后设置视图当前所在的A、B、C位置的背景色。使用Canvas.drawBitmap() - http://developer.android.com/reference/android/graphics/Canvas.html#drawBitmap(android.graphics.Bitmap绘制位图

在绘制滑块位图之前,可以使用- Canvas.drawRGB() 绘制背景颜色

使用某种事件处理来更改位置,例如实现onClickListener并侦听点击。当你得到一个点击时,只需在位置上加1,这样A -> B,B -> C,C -> A等等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9770230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档