2012-01-22 143 views
0

基本上我試圖爲平板電腦製作應用程序。 用戶將在桌面佈局中添加和刪除一堆小部件。它需要是動態的,以便根據表格佈局的寬度和高度來調整窗口大小的大小。獲取Android屏幕的尺寸

要做到這一點,我試圖在tablelayout中製作一個3x3網格。我敢肯定,你猜對了,每個廣場的桌面佈局寬度和高度都有33%。

這是我得到:

DisplayMetrics metrics; 
int totalScreenSizeH; 
int totalScreenSizeW; 

TableLayout contentTable; 
LinearLayout contentLayout; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    //Get the UI detail 
    metrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(metrics); 
    totalScreenSizeH = metrics.heightPixels; 
    totalScreenSizeW = metrics.widthPixels; 



    contentTable=(TableLayout)findViewById(R.id.tableLayout1); 
    contentLayout=(LinearLayout)findViewById(R.id.contentLayout); 

    int tableWidth =contentTable.getWidth(); 
    int tableHeight=contentTable.getHeight(); 

    int layoutWidth=contentLayout.getWidth(); 
    int layoutHeight=contentLayout.getHeight(); 

    Log.v("Table Width",""+tableWidth); 
    Log.v("Table Height",""+tableHeight); 

    Log.v("Layout Width",""+layoutWidth); 
    Log.v("Layout Height",""+layoutHeight); 

所以纔來解釋這一點更好。 linearLayout包含具有3個表格行的表格佈局。我認爲我能夠獲得這些寬度和高度,但由於某種原因,兩者的尺寸都是0。一個我有寬度和高度變暗,我將保存該變量,並基於這些變量/ 3創建小部件。

所以2個問題:

1:是這樣來處理動態調整大小部件的正確途徑。或者這是處理這樣的問題的錯誤方法?

2:爲什麼這些2-4變量都回來爲0的任何想法?

+1

我不知道確切的答案,但我可以指出你的資源,這將幫助你巨大支持表和電話(和各種維度),以及支持儀表板佈局(這聽起來像你的東西用你的3x3網格來描述)。谷歌2011年IO應用程序有一些偉大的指導方針,我建議採取看看來源,看看他們在這裏做了什麼:http://code.google.com/p/iosched/ – Jack

回答

1

由於需要處理大量的分辨率和密度,我建議不要在android上進行像素完美設計。

我的建議是看android:layout_width/height="wrap_content"android:layout_weight="INTEGER"這將幫助你浮動3x3。您也可以通過GridView

+0

Gridview實際上看起來像什麼Im試圖去做。我認爲它只在4.0版本中可用。原來那實際上是gridlayout。 gridview會包含原始類型以外的東西嗎?而不是字符串,它可以存儲碎片或其他佈局嗎? – OVERTONE

+1

如果您擴展您要放入GridView中的適配器,並且只是操作該適配器的getView,則可以在其中放置幾乎任何您想要的內容。 – jlindenbaum

0

我在OP的註釋中鏈接到源,但對於3x3網格,遵循Roman對其定製的DashboardLayout實現(Apache License FTW)所做的一些練習。它將修正各種屏幕尺寸的水平和垂直間距:https://gist.github.com/882650

如果它不符合您的使用案例,我高度懷疑您可以修改它以執行此操作。