如何在Android中获得布局的底部?

时间:2014-04-22 00:25:43

标签: android android-layout relativelayout android-ui

我在Android中使用了相对布局,当在屏幕底部添加视图时,视图的位置低于屏幕的实际底部,用户无法真正看到它。

view.setY(container.getBottom()-view.getHeight());
container.addView(view);    

container是RelativeLayout。我也尝试使用container.getHeight(),它给了我相同的结果,以及我发现使用xml文件的所有其他解决方案,这对我不起作用,因为我需要在上面的随机位置动态添加视图屏幕的底部,意思是

view.setY(container.getHeight()-Common.random.nextFloat()*100-view.getHieght());

这是XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/layout"
    tools:context="il.co.ovalley.dashvsponypolice.app.MainActivity">
</RelativeLayout>

和View我试图添加:

public class GameView extends ImageView{
  public GameView(RelativeLayout container) {
      super(container.getContext());
      m_container=container;
      container.addView(this);
  }
}

public class Cop extends GameView {
  public Cop(RelativeLayout container) {
    super(container);
    m_isShooting=false;
    m_LoadingTime=10;
    m_isLoading=false;
    m_xSpeed=1.5f;
    setY(container.getHeight()-Common.random.nextFloat()*100-getHeight()/*-getPaddingBottom()*/);
    float x=(Common.random.nextFloat()*m_container.getWidth());
    setX(x);
    drwableState=0;
    changeDirection();
 }

我已经在不同版本的Android和屏幕尺寸上测试了它,并得到了相同的结果。到目前为止,我发现的唯一解决方案是从容器的高度中减去一个任意的int,这在一台设备上似乎没问题,希望对其他设备最好,我确信有更好的解决方案。


日Thnx

1 个答案:

答案 0 :(得分:2)

为什么不用ALIGN_PARENT_BOTTOM将视图放在屏幕底部,然后应用随机填充?

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);

view.setPadding(0, 0, 0, randomValue);  // left, top, right, bottom

container.addView(view, params);

使用view.getHeight()计算所有这些并不好。这样做可以在不必自己管理任何内容的情况下工作。