0

当然,我知道它会返回 0 个度量,直到它被绘制到窗口。但是我需要获取布局的高度,因此应该调整子视图。下面是我的代码片段。在这个类中,我使用适配器类生成 36 个编辑文本。所以我需要根据屏幕获取布局的高度来调整edittexts。屏幕高度对我的应用没有帮助。任何代码片段将不胜感激。提前致谢。

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 回答