1

我在全屏布局上以编程方式创建了一些按钮。也就是说,我在活动开始时有以下代码。

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

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);

..所以活动开始了,我创建了按钮。一切看起来都很好,按钮的大小和我期望在屏幕上的位置(右下角)完全正确,并且文本在按钮内完美居中。

然后当我使用互联网调用其他一些活动然后返回到原始时,就会出现问题。此时,当我的屏幕被重新绘制时,您会注意到轻微的抖动,就好像屏幕被稍微偏移绘制然后快速重新定位一样。生成的最终屏幕看起来基本没问题,除了底部的按钮出现裁剪。

这发生在我的三星 Galaxy SII 上,但在我的 Galaxy Tab 10.1 上没有明显问题。如果我注释掉这些行,这两个设备上也没有问题:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

您可以在此处看到裁剪后的按钮:

在此处输入图像描述

有没有人遇到过类似的问题?如果是这样,它是如何解决的?

编辑:我的直觉是,不知何故,状态栏只是被缓慢移除,而按钮被定位在屏幕上,而屏幕仍在向上滑动状态栏消失的过程中......但也许这个想法是一条红鲱鱼。

4

2 回答 2

0

您可以尝试在 onResume() 中更新按钮,对于每个按钮,您应该类似于:

 ViewGroup.LayoutParams params_btn1 = <params used to display programmatically the button>
 getWindowManager().updateViewLayout(button1, params_btn1);
于 2012-09-24T11:25:16.260 回答
0

我不能重复这个问题,但尝试改变你的功能顺序。我意识到这通常不是可取的,但试一试。

public void onCreate(Bundle savedInstanceState) {

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN);

    super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_NO_TITLE);
于 2012-09-21T06:12:17.987 回答