0

私のタイルの寸法は、画面の幅と高さによって異なります。

いつ彼らに彼らの寸法を与えるべきですか?

OnSizeChangedでそれらを初期化する場合、onSizeChangedが初めて発生したかどうかを知るためにブール値が必要になります。

タイルの寸法を相対値で保存する方が適切でしょうか?

これを行うための適切な方法は何でしょうか?

ありがとう

4

1 に答える 1

0

これを行うときはGlobalLayoutListener、次のようなものを使用します。

final ViewGroup myViewGroup = (ViewGroup) findViewById(R.id.my_viewgroup);
ViewTreeObserver vto = myViewGroup.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        //myViewGroup should now have dimensions, but sometimes
        //it takes two passes, so...
        if(myViewGroup.getWidth() == 0) return;

        //Set whatever stuff here
        myTileSizes = whateverSize;

        //Remove this listener -- no longer needed
        myViewGroup.getViewTreeObserver().removeGlobalOnLayoutListener(this);
    }
}

個人的には、測定を行ったかどうかにかかわらず、ブール値を保持するというあなたのアイデアが好きです。同様に効果的である必要があります。

于 2012-09-07T15:42:30.590 に答える