我有一个AppWidget,其布局在根目录下有一个LinearLayout。窗口小部件使用背景9补丁为窗口小部件提供框架。
如何在小部件上设置Alpha通道?
我无法直接设置它,因为后台属性用于指定9补丁。它是一个LinearLayout而不是ImageView,所以我不能使用setAlpha(),那么如何让它半透明呢?
透明度级别将动态更改,因此我无法使用半透明位图。
答案 0 :(得分:0)
答案 1 :(得分:0)
据我所知,唯一的方法是使用半透明drawable(可能是9patch),因为似乎没有办法通过RemoteViews。
答案 2 :(得分:0)
您可以在Android 2.2及更高版本的RemoteViews中动态设置透明度,方法是使用imageview显示背景并利用imageview的imageAlpha方法。
使用relativelayout将图像视图定位在内容后面,在imageview中将src设置为背景图像。请注意,我将图像设置为src而不是背景,因此我可以使用setAlpha方法。
布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/MainLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<ImageView
android:id="@+id/BackgroundImageView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_margin="6dip"
android:cropToPadding="true"
android:scaleType="fitXY"
android:src="@drawable/widget_background" >
</ImageView>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ContentLinearLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="fill"
android:layout_marginBottom="26dip"
android:layout_marginLeft="14dip"
android:layout_marginRight="14dip"
android:layout_marginTop="14dip"
android:clickable="true"
android:clipChildren="false"
android:clipToPadding="false"
android:gravity="top|fill_horizontal"
android:orientation="horizontal" >
<TextView
android:id="@+id/TextView01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:text="loading..."
android:textSize="18dip"
android:textStyle="bold" >
</TextView>
</LinearLayout>
</RelativeLayout>
当您在窗口小部件中创建要显示的RemoteView时,可以使用通用setInt方法访问ImageView上的setAlpha方法,如下所示:
setInt(R.id.BackgroundImageView, "setAlpha", alpha);
我还使用setImageViewResource从首选项中换出背景图片。
setImageViewResource(R.id.backgroundImageView, bgDrawable);