0

もちろん、ウィンドウに描画されるまで0メジャーを返すことはわかっています。ただし、レイアウトの高さを取得する必要があるため、子ビューを調整する必要があります。以下は私のコードスニペットです。このクラスでは、アダプタクラスを使用して36のエディットテキストを生成しています。そのため、エディットテキストを調整するために、画面に応じてレイアウトの高さを取得する必要があります。画面の高さは私のアプリには役立ちません。コードスニペットをいただければ幸いです。前もって感謝します。

public class GameView extends Activity implements OnClickListener {

    FrameLayout frameLayout1;

    GridView gridView;

    EditText et[][]=new EditText[6][6];

    TextAdapter textadapter;


       protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);


              setContentView(R.layout.gamedisplay);

              frameLayout1=(FrameLayout)findViewById(R.id.fLayout1);

              int layoutHeight = frameLayout1.getMeasuredHeight();//this is I need. So according to this I make adustments to edittexts.
              Log.d("tag"," height :: " + layoutHeight);
              System.out.println("In gameview >>>>>>>>>>>>>>>>>>>>>   "+layoutHeight);
              gridView = (GridView) findViewById(R.id.gridview);

              gridView.setAdapter(new TextAdapter(this));

              //gridView.setVerticalScrollBarEnabled(true);

              WindowManager wm=getWindowManager();
              Display display=wm.getDefaultDisplay();
              int gridSize = display.getWidth();
              int colWidth = (gridSize / 6);
              gridView.setColumnWidth(colWidth);





             // getEditTexts();
             // putValues();


           }
4

1 に答える 1

1

XML にハードコーディングされたディメンションがある場合にのみ、事前に測定することができます。たとえば、XML に のようなものがある場合android:layout_height="20dp"、次のようなものを使用できます。

Resources r = getResources();
float layoutHeight = TypedValue.applyDimension(
            TypedValue.COMPLEX_UNIT_DIP, 20, r.getDisplayMetrics());

wrap_content または match_parent を使用している場合、定義により、これらの要素は画面上でのレイアウト方法に関連して計算され、レイアウトされる前にこれらの寸法を取得することはせいぜい曖昧です。

于 2012-09-06T15:56:02.370 に答える