我在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
答案 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()
计算所有这些并不好。这样做可以在不必自己管理任何内容的情况下工作。