0

私が現在取り組んでいるアプリケーションの一部は、Androidシェルとまったく同じように機能し、テキストラベル付きのアイコンで満たされたいくつかのページを示しています。ユーザーはページ間をスライドして必要な要素を見つけることができます。各ページで GridView と共に PagerView を使用しています。

各ページのコンテンツは、スクロールせずに表示領域に正確に収まる必要があります。各ページのアイコンの数を計算する方法の質問?

次の問題は、pagerView.getHeight() を呼び出すことができません。実際のレイアウト計算がまだ実行されていないため、結果が 0 になります。

更新しました:

問題をうまく説明できなかったようです。より単純なケースを提供しようとします。上部にステータス バーがあり、下部にボタン バーがあり、どちらも高さが固定されているとします。中央の残りの領域全体が GridView によって使用されます。

グリッド ビューには長方形のアイコンが表示されます。計算する必要があるのは、スクロールせずに表示できるアイコンの数です (残りのアイコンは次のアクティビティで表示されるため)。

4

2 に答える 2

0

2番目の問題については、onCreateでこれを使用してみてください:

private void calculateSize(int height, int width){
    int rows = Math.floor(height/imageHeight);
    int columns = Math.floor(width/imageWidth);
    //do something with numbers
}

ViewTreeObserver vto = pagerView.getViewTreeObserver();
if(vto.isAlive()){
    vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            vto.removeGlobalOnLayoutListener(this);
            calculateSize(gridView.getHeight(), gridView.getWidth());
        } 
    });
}
于 2013-10-10T20:45:22.787 に答える
0

次のようなものを試すことができます:

public int countElements(ViewGroup group) {

   int count = 0;
   for (int i = 0; i < group.getChildCount(); i++) {
       View v = layout.getChildAt(i);
       Class c = v.getClass();
       if (c == *Icon*) {
          count++;
       }         
    }
    return count;
}

内部ビューがある場合、 c が GroupView であるかどうかを確認し、メソッドを再帰的に呼び出すことができます。

于 2013-10-10T20:40:58.817 に答える