2

ユーザーがウィジェットアプリの TextView のサイズを選択できる PreferenceActivity があります。ウィジェットが押されると、アクティビティが呼び出されます。OnPause で文字サイズを設定しているのですが、うまくいきません。コードに何か問題がありますか?

    public class WidgetSettings extends PreferenceActivity 
{
    private int mAppWidgetId = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);

        addPreferencesFromResource(R.layout.widget_setttings_layout);

        Intent intent = getIntent();
        Bundle extras = intent.getExtras();
        if (extras != null) {

            mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID,
                    AppWidgetManager.INVALID_APPWIDGET_ID);
        }
}

    @Override
    protected void onPause() 
    {
        super.onPause();
        float textSize = Float.parseFloat(PreferenceManager.getDefaultSharedPreferences(this).getString("batteryTextSize", "12"));

        AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(getBaseContext());

        RemoteViews remoteView = new RemoteViews(getBaseContext().getPackageName(), R.layout.widget_layout);

        remoteView.setFloat(R.id.textView1, "setTextSize", 22);

        appWidgetManager.updateAppWidget(mAppWidgetId, remoteView);
    }
}
4

2 に答える 2

1

次の方法を使用するだけです。

remoteViews.setTextViewTextSize(R.id.textView, TypedValue.COMPLEX_UNIT_SP, 18);

私はそれが遅いことを知っています。しかし、それが他の誰かに役立つことを願っています。

于 2018-10-23T09:15:38.797 に答える
0

私は自分のアプリにこれを持っています。

// Update the widget
Intent intent = new Intent(this, Widget.class);
intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
int[] ids = { R.xml.widget };
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids);
sendBroadcast(intent);

次に、アプリ ウィジェット プロバイダー onUpdate で (リモート ビューの設定後):

//appWidgetManager.updateAppWidget(appWidgetIds, views);
AppWidgetManager.getInstance(context).updateAppWidget(new ComponentName(context, Widget.class), views);

最初のものは、ドキュメントがやると言っていることです。2番目のものは期待どおりに機能することがわかりました。

于 2015-08-24T21:27:14.440 に答える