这个xaml网格的Android等价物是什么



我想在Android中做以下布局(刚刚开始)。

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
        <RowDefinition Height="Auto" />            
    </Grid.RowDefinitions>
    <TextBlock Text="Text1" Grid.Row="0" />
    <ListBox Grid.Row="1" />
    <StackPanel Orientation="Horizontal" Grid.Row="2">
        <Button Content="Button 1" />
        <Button Content="Button 2" />
    </StackPanel>
</Grid>

我走到了这一步,但按钮没有显示在屏幕上。 看来我的方法不能有相当于星星大小的行的东西。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
        <TextView
            android:text="@string/AppName"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/textView1"
            android:gravity="center_horizontal" />
        <ListView
            android:minHeight="25px"
            android:layout_width="fill_parent"
            android:id="@+id/listView1"
            android:choiceMode="multipleChoice"
            android:drawSelectorOnTop="true"
            android:layout_height="fill_parent"
            android:layout_below="@id/textView1" />
        <LinearLayout
            android:layout_below="@id/listView1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <Button
                android:text="Button"
                android:id="@+id/button1"
                android:layout_width="wrap_content"
                android:layout_height="match_parent" />
            <Button
                android:text="Button"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/button2"
                android:gravity="center_vertical"
                android:layout_gravity="right" />
        </LinearLayout>
    </RelativeLayout>
</LinearLayout>

有人可以解释我吗?

谢谢!

试试这个:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <TextView
        android:text="AppName"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView1"
        android:gravity="center_horizontal" />
    <LinearLayout
        android:id="@+id/bottomLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal">
        <Button
            android:text="Button"
            android:id="@+id/button1"
            android:layout_width="0dp"
            android:layout_weight="50"
            android:layout_height="match_parent" />
        <Button
            android:text="Button"
            android:layout_width="0dp"
            android:layout_weight="50"
            android:layout_height="match_parent"
            android:id="@+id/button2" />
    </LinearLayout>
    <ListView
        android:minHeight="25px"
        android:layout_width="fill_parent"
        android:id="@+id/listView1"
        android:choiceMode="multipleChoice"
        android:drawSelectorOnTop="true"
        android:layout_height="fill_parent"
        android:layout_alignParentRight="false"
        android:layout_above="@id/bottomLayout"
        android:layout_below="@id/textView1" />
</RelativeLayout>

编辑:listView1上的"fill_parent"正在推动屏幕外带有按钮的布局。我将布局移动到 ListView 的顶部,并使其与父项的底部对齐(否则它们将显示在顶部)。

android:layout_alignParentBottom="true"

然后使列表视图在底部布局的顶部对齐,而不是在文本视图 1 的底部对齐。

android:layout_above="@id/bottomLayout"
android:layout_below="@id/textView1"

你应该使用 LinearLayout .RelativeLayout不是跨平台友好的,无法从 XAML 或 iOS 的角度理解。

无论如何。

XAML Auto相当于 Android android:wrap_content

要用视图填充整个 LinearLayout,您可以使用android:fill_parent并且仅让视图填充剩余空间,您需要将其与 android:layout_weight="1" 组合在一起。这很奇怪,但它有效并允许轻松实现更复杂的布局。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView
        android:text="Text1"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent" />
    <ListBox
        android:layout_weight="1"
        android:layout_height="fill_parent"
        android:layout_width="fill_parent" />
    <LinearLayout
        android:orientation="horizontal"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent">
        <Button
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="Button 1" />
        <Button
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="Button 2" />
    </LinearLayout>
</LinearLayout>

请注意,LinearLayout既用作指定大小行为(相当于行和列自动和开始)的一种方式,也用作StackPanel,因为它根据其方向堆叠任何内容。

最新更新