如何准确计算相对于屏幕尺寸的布局(按钮)高度?

时间:2016-07-09 03:10:55

标签: java android layout

嘿大家我目前正在开发我的第一个应用程序,我面临一个奇怪的问题。 我的布局中有5个按钮,其高度由函数计算,以便为每个屏幕获得正确的大小。

该功能工作正常并几乎正确设置每个按钮的高度,除了底部的一条小线,我想这是某种舍入错误?

也许有人可以指出我正确的方向,我无法弄清楚这一点。 提前谢谢。

 x' = xFactor * x + xShift
 y' = yFactor * y + yShift

正如你所看到的,我得到了displayMetrics并将它们除以5,因为我有5个瓷砖,它们必须恰好是屏幕的1/5。 “tilesize”将在稍后的代码中应用于按钮。

app running on Nexus6p

在我看到的图片中,您可以看到按钮在屏幕上几乎正确拉伸,除了我用红色圈出的小白线。 这条线可能看起来很小,但我不能让它消失,它真的让我烦恼,而且在我有不同大小的按钮和面板的其他活动中也变得更加明显。

所以如果你已经读过这篇文章了,那就谢谢了!如果您看到任何改进我的代码的方法,请告诉我:)

3 个答案:

答案 0 :(得分:4)

不使用权重属性动态地使用线性布局和子文本视图来计算尺寸。它会解决你的问题。

以下是示例代码

$(window).resize(function() {

    if($(window).width() <= 1200) {
        //You code here
    }else {
        //You code here
    }

});

答案 1 :(得分:0)

我们有更好的选择来显示相同​​重量的视图。您可以将LinearLayout与android:orientation="vertical"一起使用。将所有TextView添加到LinearLayout并设置All TextView属性android:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"

使用LinearLayout和weight属性,我们可以轻松划分屏幕。

答案 2 :(得分:0)

不要试图动态获取大小,而是尝试线性布局并给出高度和重量

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"

android:orientation="vertical">

<TextView
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:background="@android:color/holo_orange_light"
    android:gravity="center"
    android:text="item1"
    />

<TextView
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:background="@android:color/holo_blue_light"
    android:gravity="center"
    android:text="item2"
    />

如果你想水平添加按钮而不是使用水平方向和权重属性

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightsum="10"
android:orientation="vertical">

<TextView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="5"
    android:background="@android:color/holo_orange_light"
    android:gravity="center"
    android:text="item1"
    />

<TextView
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_weight="5"
    android:background="@android:color/holo_blue_light"
    android:gravity="center"
    android:text="item2"
    />