2012-01-22 83 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

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