2013-02-01 209 views

回答

3

我得到了它,文件說:你需要在你的AppWidgetProvider覆蓋onAppWidgetOptionsChanged所以您將收到廣播時控件大小

public class YourWidgetProvider extends AppWidgetProvider { 

    ... 

    @Override 
    public void onAppWidgetOptionsChanged (Context context, 
             AppWidgetManager appWidgetManager, 
             int appWidgetId, Bundle newOptions) { 
     // Here you can update your widget view 
    } 

    ... 

} 
4

要添加到Artem的答案,您可以通過執行以下操作來獲得新的選項。

public class YourWidgetProvider extends AppWidgetProvider { 

    @Override 
    public void onAppWidgetOptionsChanged (Context context, AppWidgetManager appWidgetManager, int appWidgetId, Bundle newOptions) { 
     // This is how you get your changes. 
     int minWidth = newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH) 
     int maxWidth = newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH) 
     int minHeight = newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT) 
     int maxHeight = newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT) 
    } 
} 

然後不幸的是,Android上的東西從來都不是那麼容易。 TouchWiz(三星銀河系)不會打這個電話,但我們可以播放它們。因此,在你的AppWidgetProvider類做到以下幾點:

@Override 
public void onReceive(Context context, Intent intent) { 
    // Handle TouchWiz 
    if(intent.getAction().contentEquals("com.sec.android.widgetapp.APPWIDGET_RESIZE")) { 
     handleTouchWiz(context, intent); 
    } 
} 

    private void handleTouchWiz(Context context, Intent intent) { 

     AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); 

     int appWidgetId = intent.getIntExtra("widgetId", 0); 
     int widgetSpanX = intent.getIntExtra("widgetspanx", 0); 
     int widgetSpanY = intent.getIntExtra("widgetspany", 0); 

     if(appWidgetId > 0 && widgetSpanX > 0 && widgetSpanY > 0) { 
      Bundle newOptions = new Bundle(); 
      // We have to convert these numbers for future use 
      newOptions.putInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT, widgetSpanY * 74); 
      newOptions.putInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH, widgetSpanX * 74); 

      onAppWidgetOptionsChanged(context, appWidgetManager, appWidgetId, newOptions); 
     } 
    } 

您可能需要改變,如果你正在使用MAX_HEIGHT或MAX_WIDTH我不是你如何處理包。

相關問題