DisplayMetrics未返回屏幕的确切高度和宽度

时间:2015-11-09 12:55:07

标签: android textview height width

我必须动态添加多个TextViews

每个TextView应填满屏幕,下一个TextView应添加到第一个视图下方,甚至应该占据整个屏幕。

我已经使用以下代码来确定屏幕高度和运行时。

代码段

        DisplayMetrics displaymetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
        int height = displaymetrics.heightPixels;
        int width = displaymetrics.widthPixels;

        for(int i=0;i<name.size();i++)
        {
            text = new TextView(getApplicationContext());
            text.setText(class.get(i));
            text.setTextColor(Color.parseColor("#000000"));
            text.setLayoutParams(new LinearLayout.LayoutParams(width, height));
            text.setGravity(Gravity.CENTER);
            text.setTextSize(40);
            text.setClickable(true);
            LL.addView(text);
        }

结果

第一个视图占据整个屏幕并延伸到下一个屏幕。

当第二个视图添加到LinearLayout时,小差距会留在顶部。

只有屏幕截图才能理解这种情况。

截图

1st

enter image description here

enter image description here

慢慢地,这些屏幕向下移动。它们的高度增加了约30dp。

如何使用DisplayMetrics获得屏幕的确切高度和宽度。

修改

即使使用this Answer屏幕占据比其高度高30dp

答案:

  

计算屏幕宽度和高度后,从中减去操作栏的高度。

没有提到这一点。既不在这里也不在那个重复的问题

1 个答案:

答案 0 :(得分:0)

使用LinearLayout.LayoutParams(LinearLayout.match_parent, LinearLayout.match_parent)代替新的LinearLayout.LayoutParams(width, height)

并制作TextView 对象local而不是global

TextView text = new TextView(getApplicationContext());