AppWidget では findViewById が使えない?

シェアする

Android で Widget 作ってる時に findViewById で対象の要素をとってきてテキストサイズを変えたいなーって思ったんだけど、findViewById って Activity クラスのメソッドなので使えないんですよね。

というわけでどうしたらテキストサイズ(に限らず色とかいろいろ)を変えたい場合どうしたら良いかなーと思って調べてたらちゃんと方法あったのでメモ。

Activity クラスではこうするやつ。

mTextView = (TextView)findViewById(R.id.text01);
mTextView.setTextSize(textSize);

上記を AppWidget では下記のように記述する。

RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
views.setFloat(R.id.text01, "setTextSize", textSize);

メソッド名見てわかるとおり float を setTextSize メソッドで text01 に設定(setTextSize は float をうける)。もちろん setInt など他の型も使う事ができる。

注意点としては、setTextSize() では単位の指定が出来るのだが setFloat では渡せる引数が一個だけと決まっているようなので、デフォルトの値である sp に固定になってしまう。sp はユーザが設定したフォントサイズによって可変になるので、widget のように表示領域が小さいものの場合は場合によっては困る事になるかもしれない。

とりあえずはこれでどうにかするかなー

Sponsored Link

シェアする

フォローする