2012-03-16 48 views
2

我正在嘗試在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> 
+0

只是一個很長的畫面,但是您是否將imageview的背景設置爲最初的圖像,而不是使用[src](http://developer.android.com/reference/android/widget/ImageView.html#attr_android: src)標籤? – kabuko 2012-03-16 19:25:25

+0

@kabuko抱歉沒有讓你 – Hunt 2012-03-16 19:26:49

+0

你可以發佈你的小部件的佈局? – kabuko 2012-03-16 19:27:38

回答

1

正如我懷疑,你用你的ImageViewbackground屬性。 backgroundsetImageViewResource是不同的。相反,堅持使用相同的代碼,但更改您的佈局使用src而不是background

+0

賓果!你的解決方案工作+1,但你能解釋爲什麼會發生這種情況嗎? – Hunt 2012-03-21 05:19:07

+1

當然。 'background'屬性用於'View'。這可讓您爲任何「視圖」設置背景。這包括諸如'Button','ListView'或'LinearLayout'等等,當然還有'ImageView'。一個'View'通常會在背景上繪製東西(這就是爲什麼它被稱爲背景)。例如'LinearLayout'將其所有子項都繪製在其背景之上。像'LinearLayout'一樣,'ImageView'在其背景上繪製了內容,只是'ImageView'的內容是'src'屬性(或其方法之一)設置的另一個圖像。 – kabuko 2012-03-21 05:37:10

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