Android Change小部件按钮

时间:2014-02-18 01:22:30

标签: android android-widget

我已经创建了我的第一个小部件,但是当我更改按钮图像时我遇到了问题。 下面是widget的java文件代码的一部分:

@Override
public void onReceive(Context context, Intent intent)
{
if (mp == null){
 mp = MediaPlayer.create(context.getApplicationContext(), R.raw.segno);
}

final String action = intent.getAction();

if (ACTION_WIDGET_RECEIVER.equals(action)) {
  if (mp.isPlaying()){
           mp.stop();
           mp.release();
           mp = MediaPlayer.create(context.getApplicationContext(), R.raw.segno);
  }
  else{
               RemoteViews control = new RemoteViews(context.getPackageName(), R.layout.widget);
               control.setImageViewResource(R.id.button, R.drawable.pausa);

               ComponentName cn = new ComponentName(context, Widget.class);
               AppWidgetManager.getInstance(context).updateAppWidget(cn, control);

               mp.start();

  }
  super.onReceive(context, intent);
 }
  super.onReceive(context, intent);
}

我在日志中读到了这个:

02-17 23:46:57.042: W/AppWidgetHostView(946): updateAppWidget couldn't find any view, using error view

我认为这是一个问题,但我不明白如何解决它。 当小部件出现此错误时说:加载小部件时出现问题。

谢谢大家

这是小部件的XML布局

<?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:gravity="center"
   android:layout_margin="4dp">

<Button
   android:id="@+id/button"
   android:paddingRight="30dp"
   android:layout_width="50dp"
   android:layout_height="50dp"
   android:background="@drawable/vai" />

<ImageView
   android:id="@+id/imageView1"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:layout_toRightOf="@+id/button"
   android:maxHeight="100dp"
   android:maxWidth="100dp"
   android:src="@drawable/segno" />

</RelativeLayout>

1 个答案:

答案 0 :(得分:2)

您尝试根据this Button更改Button的{​​{1}}属性的图像等同于setImageViewResource属性所以我建议您将其更改为ImageViewImageButton可点击的按钮,而不是按钮。

所以也许你的XML看起来像这样:

ImageView

<强>更新

原因是<ImageButton android:id="@+id/button" android:paddingRight="30dp" android:layout_width="50dp" android:layout_height="50dp" android:background="@drawable/vai" /> android:background不同,它没有调整照片的大小,它实际上使图像成为照片的大小(setImageViewResource与src相同)..所以你要么从头开始调整照片大小或尝试将此属性添加到android:src

ImageButton

但我不确定它会起作用,还没试过。

希望这对你有用。尝试一下,给我一个反馈。