0しか取得できない

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ひよつこ

0しか取得できない

#1

投稿記事 by ひよつこ » 13年前

お久しぶりです。
今回もよろしくお願いします。

現在androidでビュアーアプリもどきを作成しています。
その中で、ViewFlipperの幅と高さを取得してから、表示する画像のリサイズをしたいのですが、
ViewFlipperにgetWidth()やgetHeight()を行っても0しか取得できません。
何が問題なのでしょうか。

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: 0しか取得できない

#2

投稿記事 by ISLe » 13年前

Activity#onCreateとか、Viewが表示される前にサイズを取得しようとしているのでしょう。

View#onSizeChangedをオーバーライドするのが確実な方法ですが、スレッドを使って監視する方法もあります。

ひよつこ

Re: 0しか取得できない

#3

投稿記事 by ひよつこ » 13年前

返信ありがとうございます。
確かにActivityのonResume()内でgetWidth()を使っていました。

そこでonSizeChanged()を使ってみようかと思いましたが、onSizeChanged()は
Activityからはオーバーライドできないのではないでしょうか。

どうかよろしくお願いします。

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: 0しか取得できない

#4

投稿記事 by ISLe » 13年前

ひよつこ さんが書きました:そこでonSizeChanged()を使ってみようかと思いましたが、onSizeChanged()は
Activityからはオーバーライドできないのではないでしょうか。
もちろんViewFlipperを継承するんですよ。

サイズ取得だけじゃなくViewに関連するコードを継承したクラスにまとめると良いと思います。

ひよつこ

Re: 0しか取得できない

#5

投稿記事 by ひよつこ » 13年前

返信ありがとうございます。

ViewFlipperを継承すればいいことはわかりましたが、
お恥ずかしいことにViewFlipperの継承がどのようなものかわかりません。

ViewFlipperを継承してonSizeChangedをオーバーライドする方法を教えていただけないでしょうか。
よろしくお願いします。

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: 0しか取得できない

#6

投稿記事 by ISLe » 13年前

ひよつこ さんが書きました:ViewFlipperを継承してonSizeChangedをオーバーライドする方法を教えていただけないでしょうか。
メインアクティビティがActivityを継承するのと同じですよ。

コード:

import android.content.Context;
import android.util.AttributeSet;
import android.widget.ViewFlipper;

public class MyViewFlipper extends ViewFlipper
{
	public MyViewFlipper(Context context) {
		super(context);
	}
	public MyViewFlipper(Context context, AttributeSet attrs) {
		super(context, attrs);
	}
	@Override
	protected void onSizeChanged(int w, int h, int oldw, int oldh) {
		super.onSizeChanged(w, h, oldw, oldh);
		// w: 新しい幅
		// h: 新しい高さ
	}
}
このようにして必要なコードを継承したクラスにどんどん追加します。
ViewFlipperの替わりにMyViewFlipperを使えば追加したコードを呼び出すことができます。

ひよつこ

Re: 0しか取得できない

#7

投稿記事 by ひよつこ » 13年前

返信ありがとうございます。

無事にViewFlipperを継承でき、onSizeChanged()内でViewFlipperの高さと幅を取得できました。

しかし、それとは別に問題が発生したため、別のトピックで質問させていただこうと思います。

そちらもよろしくお願いします。

閉鎖

“C言語何でも質問掲示板” へ戻る