是否可以让用户自定义.9 drawable的颜色?

时间:2011-08-10 12:57:35

标签: android customization drawable

相当于标题所说的内容。我希望用户可以选择自定义我有9个绘图的边框。这样的事情是可能的还是我需要使用不同的方法?现在,我认为它不起作用,它将搞乱9补丁。

2 个答案:

答案 0 :(得分:1)

你能发一张9补丁的照片吗?有可能将其部分提取到另一种类型的drawable,然后使用图层列表将可自定义部分(使用用户定义的颜色绘制)分层到固定部分下。

[更新] 根据您发布的图片,我会删除图层列表的想法,但我们仍然可以解决问题。我们的想法是完全从9补丁中删除彩色边框和内部深色背景(用阴影颜色和不透明度填充该区域)。然后将3个布局相互嵌套。第一个将使用9补丁作为背景。第二种方法是使用用户定义的颜色作为背景。第三种方法是使用面板颜色作为背景。 9补丁将提供适当的边距来定位第二个(用户颜色)布局,然后您只需将layout_margin属性添加到第二个面板,以将最内部布局定位几个dps。

<LinearLayout
    android:id="@+id/PanelOuter"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/shadow_nine_patch">
    <LinearLayout
        android:id="@+id/PanelUserBorder"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/custom_border_width"
        android:background="@color/dialog_border_color_default">
        <LinearLayout
            android:id="@+id/PanelContent"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="@dimen/custom_dialog_content_margin"
            android:background="@color/dialog_inner_color">
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

当然,您有责任在代码中查找PanelUserBorder视图,并使用正确的用户定义颜色调用setBackgroundColor()

答案 1 :(得分:0)

也许你可以通过在按钮上方放置一个50%透明视图来着色。

在考虑之后,我想也许你可以通过位图改变颜色:

How to change Bitmap image color in android?