小部件中的图像重叠

时间:2012-03-16 18:56:50

标签: android android-widget

我正在尝试在Android中创建一个小部件,当我点击图像时,图像会被一个新的 - 一种切换图像更改。

但是当我点击它时,图像覆盖旧图像而不是替换新图像。我不知道这是小工具的工作方式还是我做错了。

我的图像是半透明的,所以如果一个覆盖另一个,可以看到重叠的图像。

这是我通过覆盖它在OnReceive中编写的代码:

 @Override 
      public void onReceive(Context context, Intent intent){ 

               if (intent.getAction().equals(iAlertConstant.ACTION_WIDGET_UPDATE_FROM_WIDGET)) {                   


                   RemoteViews remoteViews = new RemoteViews(context.getPackageName(),R.layout.mywidget);
                   remoteViews.setImageViewResource(R.id.btnOnOff,R.drawable.offbtn);                  
                   ComponentName thisWidget = new ComponentName(context, EmergencyWidget.class); 
                   AppWidgetManager.getInstance(context).updateAppWidget(thisWidget, remoteViews);         



               }
               else 
                    super.onReceive(context, intent);         


      }

布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:background="@drawable/widget_background"
   android:paddingLeft="10.0dip" 
   android:paddingTop="8.0dip"
   android:paddingRight="10.0dip" 
   android:paddingBottom="8.0dip" 
   android:layout_width="fill_parent" 
   android:layout_height="72dp" 
   android:layout_marginLeft="10.0dip" 
   android:layout_marginTop="10.0dip" 
   android:layout_marginRight="10.0dip"  
   android:id="@+id/emergencyWidget"

   android:orientation="horizontal">

        <ImageView
            android:background="@drawable/offbtn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="7dp"
            android:layout_marginLeft="4dp"
            android:layout_marginRight="4dp"
            android:layout_gravity="right"      
            android:id="@+id/btnOnOff"

     />



</LinearLayout>

2 个答案:

答案 0 :(得分:1)

我怀疑,您使用background上的ImageView属性。 backgroundsetImageViewResource不同。相反,请坚持使用相同的代码,但更改布局以使用src代替background

答案 1 :(得分:0)

好吧,我已经在小部件布局中创建了ImageViews并使其成为一个不可见的,每当有人点击时,我将使第一个看不见,第二个看不见

remoteViews.setViewVisibility(R.id.emergencyOnOff,ImageView.GONE);
remoteViews.setViewVisibility(R.id.emergencyOnOff2,ImageView.VISIBLE);

如果有人有任何其他解决方案,请随时发帖,因为此问题仍然存在,更多关于wont be feasible if there will be plenty of ImageViews