GridView getMeauredHeight()またはgetHeight()は0を返します。

私はアンドロイド携帯電話の画面サイズに応じてGridviewの動的行の数を作成したい。だから、行数をカウントするonCreate()のGridviewの高さが必要です。(高さ/列)ここでコードスニペットです::

public class GridActivity extends Activity
{
     GridView gridView;
     GridAdapter adapter;'

     public void onCreate(Bundle savedInstance state)
     {
          setContentView(R.layout.gridview);
          gridView = (GridView) findViewById(R.id.grid);

          adapter = new GridAdapter(this);
          gridView.setAdapter(adapter);

          int gridHeight = gridView.getMeasuredHeight();
          Log.d("tag"," height :: " + gridHeight);
     }
 }

ログの猫では、それを示しています - 高さ:: 0 私はそれが適切に膨らませた後にゼロを与えることを理解していない。

これはバグですか?それとも私は何かが足りない?

0
あなたはscreanの高さと幅を見つける。
追加された 著者 NagarjunaReddy,
画面の高さと幅はここでは関係ありません。質問はグリッドビューの高さだけを中心に行われます。
追加された 著者 android_one,

2 答え

私はあなたの携帯電話の画面サイズとGridView heigthをどのように関連付けるかについてはわかりません。しかし、ここでは画面の解像度とGridViewの高さを見つけるためのコードです。

1)画面の解像度を見つけるには、onCreate()、

    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    int screen_width = dm.widthPixels;
    int screen_height = dm.heightPixels;

2)gridViewの高さを見つけるには、以下のメソッドを使うことができます。

@Override 
public void onWindowFocusChanged(boolean hasFocus) 
{ 
    //TODO Auto-generated method stub 
     super.onWindowFocusChanged(hasFocus);
     System.out.println("...111Height..."+gridview.getMeasuredWidth()); 
}
0
追加された
@AndroSelva gridview.getMeasuredWidth()はピクセル単位ですか?
追加された 著者 Compaq LE2202x,
返信いただきありがとうございます。私もこれを試してみます..
追加された 著者 android_one,

GridViewはウィンドウに描画されない限り0のmeasuredheightと0の高さを返しますので、その時点でGridVIewの高さを取得することはできません。問題の回避策は次のとおりです。 n-1回のビューがスクリーンに描画された後に占有されたGridViewの高さとデバイスの全高を比較することによって、N番目のビューをgridViewに追加します。

public void addNCompareHeight(View view)
 {   
    ViewTreeObserver observer = grid.getViewTreeObserver();
    observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            //in here, place the code that requires you to know the dimensions.
            //this will be called as the layout is finished, prior to displaying.
            if(gridHeight
0
追加された
私はあなたの答えの最後の部分がないと思う
追加された 著者 android_one,
ありがとう、それは働いた。
追加された 著者 android_one,