2012-11-25 37 views
2

我的要求很简单:我只想在屏幕的随机位置显示一些文字。如何将一个线性布局放置在屏幕的随机位置?

我期待,为我所用:

int x = r.nextInt(width - layout.getWidth()); 

int y = r.nextInt(height - layout.getHeight()); 

,我的布局将完美地契合了屏幕。

不幸的是,我的文本有时在屏幕的右侧,出现在多行中!

这里是我的代码

LinearLayout layout = new LinearLayout(this); 
    layout.setOrientation(LinearLayout.VERTICAL); 

    Display display = getWindowManager().getDefaultDisplay(); 
    Point size = new Point(); 
    display.getSize(size); 
    int width = size.x; 
    int height = size.y; 

    layout.addView(clock); 
    layout.addView(txtView); 

    Random r = new Random();  
    int x = r.nextInt(width - layout.getWidth()); 
    int y = r.nextInt(height - layout.getHeight()); 

    layout.setPadding(x, y, 0, 0); 
    setContentView(layout); 

回答

0

最大的问题,我是

Display display = getWindowManager().getDefaultDisplay(); 
Point size = new Point(); 
display.getSize(size); 

返回包括顶部的状态栏。值(或通知,不知道如何称呼它),并在底部的软件按钮。

解决方案是在后台创建一个虚拟布局并进行测量。

1

使用RelativeLayout为你的容器,而不是LinearLayout,因为这是被设计为。

+0

同样的结果,文本有时会出现在屏幕的右侧,并被“切割” –

相关问题