Colorpicker 改变 9 个独立的绘图?

发布于 2024-12-27 16:57:49 字数 121 浏览 2 评论 0原文

我有 9 个 ImageView,当 onClick 每个打开一个颜色选择器时,我希望颜色选择器更改与当时使用 onclick 的同一视图相关的可绘制颜色。我不确定如何进行此操作?我在网上搜索了示例,但似乎找不到任何相关的内容。

I have 9 ImageViews that when onClick each open a colorpicker, I would like have the colorpicker change the color of a drawable correlating to that same view that was used the onclick at that time. I am unsure of how to conduct this? I have searched for examples online but cant seem to find anything that is related.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

俏︾媚 2025-01-03 16:57:49

如果您想要从中选择一组固定的颜色,则可以使用 级别列表可绘制。在 XML 中,它可能看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@drawable/color_0"
        android:maxLevel="0" />
    <item
        android:drawable="@drawable/color_1"
        android:maxLevel="1" />
    . . .
</level-list>

然后,您可以将其设为 的可绘制对象ImageView 并通过调用图像视图的 setImageLevel() 方法选择要显示的颜色。

编辑

您要求提供以编程方式执行此操作的示例。假设您有以下布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:tag="0"
            android:onClick="changeColor"
            android:text="Change color" />

        <View
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:tag="color_0" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:tag="1"
            android:onClick="changeColor"
            android:text="Change color" />

        <View
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:tag="color_1" />
    </LinearLayout>

    <!-- etc. -->
</LinearLayout>

然后,在您的活动中,定义您的处理程序函数,如下所示:

public void changeColor(View view) {
    String tag = "color_" + view.getTag();
    View target = findViewById(android.R.id.content).findViewWithTag(tag);
    int color = getColorFromUser();
    target.setBackgroundColor(color); // or whatever you want to do
}

人们可能希望在此过程中包含一些检查以检查空标签、未找到的视图、用户取消颜色选择等。

If you have a fixed set of colors that you want to select from, you can use a level list drawable. In XML, it might look something like this:

<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:drawable="@drawable/color_0"
        android:maxLevel="0" />
    <item
        android:drawable="@drawable/color_1"
        android:maxLevel="1" />
    . . .
</level-list>

You can then make this the drawable for an ImageView and select which color to display by calling the image view's setImageLevel() method.

EDIT

You asked for an example of doing this programmatically. Let's say you have the following layout:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:tag="0"
            android:onClick="changeColor"
            android:text="Change color" />

        <View
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:tag="color_0" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:tag="1"
            android:onClick="changeColor"
            android:text="Change color" />

        <View
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:tag="color_1" />
    </LinearLayout>

    <!-- etc. -->
</LinearLayout>

Then, in your activity, define your handler function something like this:

public void changeColor(View view) {
    String tag = "color_" + view.getTag();
    View target = findViewById(android.R.id.content).findViewWithTag(tag);
    int color = getColorFromUser();
    target.setBackgroundColor(color); // or whatever you want to do
}

One might want to include some checking in this process for null tags, unfound views, the user canceling the color choice, etc.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文