好吧,我贬低自己了。这实际上让我感到困惑,因为它在模拟器上显示得很好,但在我的手机上却不行。
在模拟器上,我看到自定义 SurfaceView _map 对象占据了整个屏幕,除了底部的 EditText 文本框(就在它应该在的位置)。当我在我的摩托罗拉 Droid 上运行相同的代码、相同的所有内容时,任何地方都看不到 EditText。
我认为我在 LinearLayout 实现中遗漏了一些东西。到目前为止,我已经轻松学习如何使用另一个 API 的布局管理器。
代码如下:
_map = new Map(this);
_chatText = new EditText(this);
layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 1));
layout.setGravity(Gravity.BOTTOM);
layout.addView(_map, 0);
layout.addView(_chatText, 1);
setContentView(layout);
看起来很简单,所以说实话,我不知道为什么它在实际的 Android 设备上运行时会吃掉我的 EditText。可悲的是,我已经花了很多时间让它在模拟器本身中正确显示。
最佳答案
是的,不同的手机会产生不同的结果。我的情况可能就是这样,因为我的手机也超频到 1.2GHz,并且有一个定制的 ROM。不管怎样,解决这个小问题的方法是向添加到布局的 View 添加权重规范。
LinearLayout.LayoutParams lpMap = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT); // Verbose!
lpMap.weight = 0.15f;
然后我使用以下行而不是上面的行:
layout.addView(_map, 0, lpMap);
我希望这对某人有帮助。这绝对是一个令人困惑的情况,但有时修补是解决方案。虽然我回答了我自己的问题,但非常感谢整个社区。
关于java - LinearLayout问题[Android],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4116172/