大家好,我目前正在开发我的第一个应用程序,但我遇到了一个奇怪的问题。 我的布局中有 5 个按钮,它们的高度由一个函数计算得出,以便为每个屏幕获得正确的尺寸。
该函数工作正常并且几乎正确地设置了每个按钮的高度,除了底部的一条小线,我猜这是某种舍入错误?
也许有人能给我指出正确的方向,我想不通。 提前致谢。
DisplayMetrics displayMetrics = new DisplayMetrics();
WindowManager wm = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
wm.getDefaultDisplay().getMetrics(displayMetrics);
int minusthis = 0;
Context context = this;
int resource = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resource > 0) {
minusthis = context.getResources().getDimensionPixelSize(resource);
}
int screenHeight = displayMetrics.heightPixels - minusthis;
int tilesize = (screenHeight / 5);
如您所见,我得到了 displayMetrics 并将它们除以 5,因为我有 5 个图 block ,它们必须恰好是屏幕的 1/5。 “tilesize”稍后将应用于代码中的按钮。
在我附上的图片中,您可以看到按钮在屏幕上几乎正确拉伸(stretch),除了我用红色圈出的细小白线。 这条线可能看起来很小,但我不能让它消失,这真的让我很烦,而且在我有不同大小的按钮和面板的其他 Activity 中它变得更加明显。
所以如果你已经读到这里,谢谢你!如果您发现任何改进我的代码的方法,请告诉我:)
最佳答案
不要动态计算大小,而是使用线性布局 和具有权重 属性的子 TextView 。它会解决您的问题。
这是示例代码
<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="0dp"
android:layout_weight="1"
android:background="@android:color/holo_orange_light"
android:gravity="center"
android:text="item1"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@android:color/holo_blue_light"
android:gravity="center"
android:text="item2"
/>
</LinearLayout>
关于java - 如何准确计算相对于屏幕尺寸的布局(按钮)高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38277898/