【问题标题】:Getting the dimensions of an androids screen获取机器人屏幕的尺寸
【发布时间】:2012-01-22 18:35:53
【问题描述】:

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

为此,我尝试在表格布局中创建一个 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 吗?

【问题讨论】:

  • 我不知道确切的答案,但我可以为您指出一个资源,该资源将极大地帮助您支持表格和电话(以及各种尺寸),以及支持仪表板布局 (这听起来像你正在描述的东西,你的 3x3 网格)。 Google 2011 IO 应用程序对此有一些很好的指导,我建议查看源代码并查看他们在此处所做的工作:code.google.com/p/iosched

标签: android layout android-layout dynamic dimensions


【解决方案1】:

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

我的建议是查看android:layout_width/height="wrap_content"@987654321@,这将帮助您制作浮动3x3。您也可以通过@987654322@ 实现此目的

【讨论】:

  • Gridview 实际上看起来就像我想要做的。我以为它只在 4.0 中可用。原来那实际上是网格布局。 gridview 会包含原始类型以外的东西吗?像代替字符串一样,它可以存储片段或其他布局吗?
  • 如果您将要放入 GridView 的适配器扩展并仅操作该适配器的 getView,您可以在其中放入几乎任何您想要的东西。
【解决方案2】:

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

如果它不适合您的用例,我高度怀疑您可以对其进行修改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-31
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    相关资源
    最近更新 更多