获取机器人屏幕的尺寸

时间:2012-01-22 18:35:54

标签: android layout android-layout dynamic dimensions

基本上我正在尝试为平板电脑申请。 用户在表格布局中添加和删除了一堆小部件。它需要是动态的,以便根据表格布局的宽度和高度来调整窗口小部件的大小。

为此,我正在尝试在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包含tablelayout,它有3个表行。我想我可以得到这些的宽度和高度,但由于某种原因,两者都回来了0的大小。我有宽度和高度变暗,我将保存该变量并根据这些变量/ 3创建小部件。

所以有2个问题:

1:这是处理动态大小的小部件的正确方法。或者这是处理这样问题的错误方法吗?

2:为什么这2-4个变量都回归为0的任何想法?

2 个答案:

答案 0 :(得分:1)

我建议不要在Android上进行像素完美的设计,因为你需要处理大量的分辨率和密度。

我的建议是查看android:layout_width/height="wrap_content"android:layout_weight="INTEGER",这将有助于您制作浮动3x3。您也可以使用GridView

来实现此目的

答案 1 :(得分:0)

我在对OP的评论中链接了源代码,但对于3x3网格,请遵循Roman在其自定义DashboardLayout实现(Apache License FTW)中所做的一些实践。它将在各种屏幕尺寸上校正水平和垂直间距:https://gist.github.com/882650

如果它不适合您的用例,我强烈怀疑您可以修改它。