我的小部件背景消失了 - android

时间:2014-02-27 07:32:12

标签: android android-widget

我开发了一个带有小部件的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);}

2 个答案:

答案 0 :(得分:1)

我通过使ldpi,mdpi densties可用来解决问题。我在drawable文件夹中使用了一个图像。

答案 1 :(得分:0)

我没有足够的声誉发表评论,因此将此作为答案发布,对不起。

我不确定三星galaxy grand的问题是什么,以及为什么它不能专门在该设备上工作,如果它不能在一个型号上工作,那么很有可能它也不适用于其他设备。尝试一个小实验,试着解决问题。

尝试使用remoteViews.setImageViewResource()

其他一些人通过使用

解决了这个问题
remoteView.setInt(R.id.viewid, "setBackgroundResource", R.color.somecolor);

此外,您可以尝试使用技巧将ImageView用作背景。它在这里解释..

Android Change Widget Background Image