1 つ以上の列/行に情報を表示する GridView を備えた (動作する) ウィジェットがあります。プログラムで列数を設定したいので、ユーザーが選択する必要があります。Layout-XML 内の numColumns を「1」に設定すると、正常に動作します。次の方法で numColumns を設定しようとしても、効果はありません。
rViews.setInt(R.id.duration_view, "setNumColumns", 1);
レイアウトは次のようになります。
<GridView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/duration_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:minHeight="64dp"
android:verticalSpacing="0dp"
android:columnWidth="192dp"
android:numColumns="auto_fit"
/>
RemoteAdapter を使用した私のウィジェット onUpdate() メソッド:
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
// ....
Intent intent = new Intent(context, ViewFlipperWidgetService.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));
RemoteViews rViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
rViews.setRemoteAdapter(R.id.duration_view, intent);
rViews.setEmptyView(R.id.duration_view, R.id.empty_view);
// This doesnt have any effect...:-(
rViews.setInt(R.id.duration_view, "setNumColumns", 1);
appWidgetManager.notifyAppWidgetViewDataChanged(appWidgetId, R.id.duration_view);
AppWidgetManager.getInstance(context).updateAppWidget(appWidgetId, rViews);
// ....
super.onUpdate(context, appWidgetManager, appWidgetIds);
setNumColumns が効果がないだけでなく、他のメソッド呼び出しも同様です。私が間違っていることは何ですか?