0

好吧,我贬低自己。它实际上让我感到困惑,因为它在模拟器上显示得很好,而不是在我的手机上。

在模拟器上,我看到自定义 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。可悲的是,我已经花了很多时间让它在模拟器本身中正确显示。

4

1 回答 1

1

是的,不同的手机会产生不同的结果。对我来说可能就是这种情况,因为我的手机也超频到了 1.2ghz 并且有一个定制的 rom。无论哪种方式,这个小故障的解决方案是为添加到布局的视图添加一个权重规范。

LinearLayout.LayoutParams lpMap = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT); // Verbose!
    lpMap.weight = 0.15f; 

然后我使用以下行而不是上面的行:

layout.addView(_map, 0, lpMap);

我希望这对某人有所帮助。绝对是一个令人困惑的情况,但有时修补是解决方案。尽管我回答了自己的问题,但非常感谢整个社区。

于 2010-11-07T03:38:52.457 回答