2010-11-07 96 views
0

好吧,我貶低自己。它實際上讓我感到困惑,因爲它在模擬器上顯示得很好,而不是在我的手機上。LinearLayout問題[Android]

在模擬器上,我看到自定義的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); 

看起來那麼straitforward,所以我真的不有線索時,實際的Android設備上運行,爲什麼它只是吃我的EditText。可悲的是,我已經花了很多時間讓它在模擬器本身中正確顯示。

+0

不幸的是,您可能會在不同的手機上看到不同的結果。雖然仿真器可能會顯示正確的結果,但它們在不同設備上可能會有不同的結果。 – 2010-11-07 02:50:52

回答

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); 

我希望這可以幫助別人。絕對是一個令人困惑的情況,但有時候修補是解決方案。雖然我回答了我自己的問題,但非常感謝整個社區。