我开发了一个带有小部件的Android应用程序。除了一个移动设备三星galaxy grand,android 4.1.2之外,这个小部件工作得很好。小部件的背景可绘制消失,而文本仍然可见。我不知道问题是否来自设备,但我注意到此设备上的其他小部件没有这个问题。当我按住小部件将其删除时,背景出现,然后再次消失。我已经使用相同的API测试了其他设备上的小部件,并且运行良好。
有关原因的任何建议吗?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="8dip"
android:background="@drawable/dthree"
android:orientation="vertical"
android:weightSum="1.0"
>
<TextView
android:id="@+id/widgetDateTV"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginTop="15dp"
android:layout_weight="0.1"
android:gravity="center"
android:textAlignment="center"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@color/OLIVE" />
<TextView
android:id="@+id/widgetTextTV"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_gravity="center|center_vertical"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="5dp"
android:layout_weight="0.9"
android:gravity="center|center_vertical"
android:textAlignment="center"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@color/BROWN"
/>
ComponentName thisWidget = new ComponentName(context,
MyWidgetProvider.class);
int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);
for (int widgetId : allWidgetIds) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
R.layout.widget_layout);
remoteViews.setInt(widgetId, "setBackground", R.drawable.dthree);
remoteViews.setTextViewText(R.id.widgetTextTV, "some text");
remoteViews.setTextViewText(R.id.widgetDateTV,"date");
Intent intent = new Intent(context, DummyActivity.class);
intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS,appWidgetIds);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.widgetTextTV,
pendingIntent);
appWidgetManager.updateAppWidget(widgetId, remoteViews);}
答案 0 :(得分:1)
我通过使ldpi,mdpi densties可用来解决问题。我在drawable文件夹中使用了一个图像。
答案 1 :(得分:0)
我没有足够的声誉发表评论,因此将此作为答案发布,对不起。
我不确定三星galaxy grand的问题是什么,以及为什么它不能专门在该设备上工作,如果它不能在一个型号上工作,那么很有可能它也不适用于其他设备。尝试一个小实验,试着解决问题。
尝试使用remoteViews.setImageViewResource()
。
其他一些人通过使用
解决了这个问题remoteView.setInt(R.id.viewid, "setBackgroundResource", R.color.somecolor);
此外,您可以尝试使用技巧将ImageView用作背景。它在这里解释..