如何制作带有单独按钮的颜色选择器?

Posted

技术标签:

【中文标题】如何制作带有单独按钮的颜色选择器?【英文标题】:How to make a color picker with separate buttons? 【发布时间】:2021-12-16 22:14:48 【问题描述】:

我想在我的图像上制作一个颜色选择器。例如,我们有 6 个按钮。当我们按下按钮选择器颜色时,获得 1dp 帧以显示选择的颜色。我认为最好的方法是将 RadioGroup 与 RadioButtons 一起使用,但我怎样才能使单选按钮成为正方形并在其中着色?还是我错了?

感谢任何帮助:) image with colors

【问题讨论】:

请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。 【参考方案1】:

您可以在一个 LinearLayout 中使用多个 ToggleButtons。

    确保 ToggleButtons 既没有 OnText 也没有 OffText。

    将 ToggleButtons 的背景设置为如下所示。

bg_toggle.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/bg_active_red" android:state_checked="true" />
    <item android:drawable="@drawable/bg_red">
</selector>

bg_red.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item
            android:bottom="5dp"
            android:left="5dp"
            android:right="5dp"
            android:top="5dp">
    
            <shape android:shape="rectangle">
                <solid android:color="#F00" />
            </shape>
        </item>
    </layer-list>

bg_red_active.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <stroke
                android:
                android:color="#000" />
        </shape>
    </item>

    <item
        android:bottom="5dp"
        android:left="5dp"
        android:right="5dp"
        android:top="5dp">

        <shape android:shape="rectangle">
            <solid android:color="#F00" />
        </shape>
    </item>
</layer-list>

Android 现在会根据天气切换背景资源,是否选中切换。您可能想使用 ClickListeners 来停用未单击的按钮。这里可以进行很多优化,但是由于您提出了一个相当模糊的问题,因此您得到的答案也很模糊。

您可以将其封装到自定义视图中,并创建可以与自定义颜色一起重复使用的内容。

更新: 下面将向您展示如何使用该背景。如果选中 Toggle,则黑色边框可见。

<LinearLayout
    android:layout_
    android:layout_
    android:orientation="horizontal">

    <ToggleButton
        android:id="@+id/toggle_red"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:background="@drawable/bg_toggle_red" />

    <ToggleButton
        android:id="@+id/toggle_blue"
        android:layout_
        android:layout_
        android:layout_weight="1"
        android:background="@drawable/bg_toggle_blue" />
</LinearLayout>

【讨论】:

我只想获得与图像上显示的相似的输出。颜色:像其中的 8 种。当我选择颜色时,它会变成黑色。此颜色选择将出现在一个对话框中,当您完成并按“保存”后,此颜色应设置为 Google 地图上的标记颜色。 好的。我提供的答案向您展示了如何创建一个按钮。我不会用不同的颜色为你重复 8 次答案。 我还添加了一个使用示例。

以上是关于如何制作带有单独按钮的颜色选择器?的主要内容,如果未能解决你的问题,请参考以下文章

按钮文本颜色的单独日/夜选择器

如何利用NetBeans Swing颜色选择器控制按钮背景

如何在android中为不同颜色的按钮重用选择器?

如何在微调器中更改单选按钮颜色

如何将 vscode css 颜色选择器功能带入带有匹配颜色名称格式的字符串的 js 文件中?

Xamarin.Forms 选取器选择背景颜色