【问题标题】:DisplayMetrics not returning exact height and width of the screen [duplicate]DisplayMetrics没有返回屏幕的确切高度和宽度[重复]
【发布时间】:2016-02-10 03:00:51
【问题描述】:

我必须动态添加多个TextViews

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

我使用以下代码来确定屏幕高度并在运行时使用。

代码 sn-p

        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 的第二个视图时,顶部会留下一点空隙。

这个场景只有截图才能理解。

截图

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

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

编辑:

即使使用this Answer,屏幕也比它的高度多占用30dp

答案:

计算完屏幕宽高后,减去Action bar的高度。

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

【问题讨论】:

    标签: android textview height width


    【解决方案1】:

    使用LinearLayout.LayoutParams(LinearLayout.match_parent, LinearLayout.match_parent) 而不是新的LinearLayout.LayoutParams(width, height)

    也让你的TextView 对象local 而不是global

    TextView text = new TextView(getApplicationContext());
    

    【讨论】:

    • 我已经做到了。但它只接受 1 TextView
    • 将 textview 对象设为本地
    猜你喜欢
    • 2012-11-04
    • 2015-09-10
    • 2018-02-02
    • 2012-11-01
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多