如何在 XML 中定义屏幕尺寸的一半

mys*_*low 2 xml android xamarin

我有以下以编程方式编写的代码,

Display display = this.WindowManager.DefaultDisplay;
Point size = new Point();
int height = size.Y;

bViewLayout.Height = (int)(height * 0.5);
Run Code Online (Sandbox Code Playgroud)

但是,我想知道如何在 Xml 中实现一半屏幕而不是如下硬编码?

<GridLayout
    android:layout_columnSpan="1"
    android:layout_gravity="fill"
    android:layout_rowSpan="1"
    android:layout_height="135"/>
Run Code Online (Sandbox Code Playgroud)

编辑: 以下代码不起作用:

   <?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:columnCount="2"
    android:rowCount="2">
    <GridLayout
        android:id="@+id/aView"
        android:layout_columnSpan="1"
        android:layout_gravity="fill"
        android:layout_rowSpan="2"
        android:layout_width="100"
        android:layout_height="25"
        android:text="1" />
    <GridLayout
        android:id="@+id/bView"
        android:layout_columnSpan="1"
        android:layout_gravity="fill"
        android:layout_rowSpan="1"
        android:layout_height="0dp"
        android:layout_width="match_parent"
        android:layout_weight="0.5"
        android:text="2" />
    <GridLayout
        android:id="@+id/cView"
        android:layout_columnSpan="1"
        android:layout_gravity="fill"
        android:layout_rowSpan="1"
        android:layout_height="0dp"
        android:layout_width="match_parent"
        android:layout_weight="0.5"
        android:text="3" />
</GridLayout>
Run Code Online (Sandbox Code Playgroud)

shk*_*der 5

这样做(对于宽度):

<GridLayout
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="0.5" />
Run Code Online (Sandbox Code Playgroud)

这意味着“宽度未定义,高度已定义,我说重量为 50%”(默认为 1.0 中的 0.5),因此 Android 会将宽度扩展至设备屏幕宽度的 50%。

相反,将高度值0dp和宽度切换为某值。我相信你现在已经明白了;)