更改小部件图像按钮背景颜色和形状

时间:2014-05-22 22:15:16

标签: android android-layout widget

我的小部件配置活动,用户可以选择小部件的形状,颜色和图像src。

我的小部件具有非常简单的XML布局:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ImageView
    android:id="@+id/backgroundImage"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scaleType="fitXY"
    android:src="@drawable/rounded_conners"
    android:clickable="false"
    android:focusable="false"/>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">

    <ImageButton
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:adjustViewBounds="true"
        android:background="@drawable/transparent_color"
        android:clickable="true"
        android:focusable="true"
        android:padding="8dp"
        android:scaleType="fitCenter"
        android:src="@drawable/btn03_off" />
</RelativeLayout>

在src参数中选择图像并在图像视图的src中设置一个形状,例如:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="@color/background_red" />
<corners android:bottomLeftRadius="20dp" android:bottomRightRadius="20dp"
    android:topLeftRadius="20dp" android:topRightRadius="20dp" />

我想根据用户选择的颜色,形状和图像以编程方式更改它。不幸的是我无法解决这个问题。我可以在活动中更改图像按钮背景/形状,颜色和图像src。但我不能在widget中做到这一点,因为我没有图片按钮的参考,在widget中没有findViewById等。

我可以像这样更改图像视图的形状:

views.setImageViewResource(R.id.backgroundImage, R.drawable.square);

不幸的是我无法弄清楚如何改变它的颜色。在活动中,我可以这样做:

((GradientDrawable)mPreviewImageView.getBackground()).setColor(colorId);

但如果我没有图像视图的实例,我不能这样做。

BTW:会有很多变化,所以我不能制作大量的XML布局,只是根据用户输入进行更改。我需要动态地做。

感谢您的建议

0 个答案:

没有答案