Android布局,如消息应用程序

时间:2015-02-25 16:52:59

标签: android android-layout xamarin

我正在尝试创建类似于现有Android Messaging应用程序所使用的Android GUI。

  • EditText和Button将锚定在视图的底部。 EditText可以增长和缩小以显示一行或多行文本。 Button将位于EditText的右侧。
  • MvvmCross MvxListView将填充剩余空间。当EditText收缩和增长时,MvxListView应自动垂直重新调整大小,或者用户弹出键盘。

我无法想出符合我想要的东西。我当前解决方案的问题是硬编码边距。当我输入两行文字时,我最终会看到重叠的视图。有谁知道如何使MvxListView增长/缩小以填充剩余的空间?

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <Mvx.MvxListView
        android:id="@+id/MessageConversationView_MessageList"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentTop="true"
        android:dividerHeight="2dp"
        android:divider="@null"
        android:stackFromBottom="true"
        android:transcriptMode="alwaysScroll"
        android:layout_marginBottom="50dp"
        local:MvxBind="ItemsSource Messages" />
    <RelativeLayout
        android:id="@+id/InnerRelativeLayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true">
        <Button
            android:text="Send"
            android:id="@+id/Button"
            android:layout_alignParentRight="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
        <EditText
            android:id="@+id/EditText"
            android:layout_width="fill_parent"
            android:layout_toLeftOf="@id/Button"
            android:layout_height="wrap_content" />
    </RelativeLayout>
</RelativeLayout>

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你会喜欢下面的内容。注意:我使用Android Studio和常规ListView编写了此代码,即它未针对Xamarin进行测试。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <RelativeLayout
        android:id="@+id/InnerRelativeLayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true">

        <Button

            android:text="Send"
            android:id="@+id/Button"
            android:layout_alignParentRight="true"

            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <EditText
            android:id="@+id/EditText"
            android:layout_width="fill_parent"
            android:layout_toLeftOf="@id/Button"
            android:layout_height="wrap_content" />
    </RelativeLayout>

    <Mvx.MvxListView
        android:layout_above="@+id/InnerRelativeLayout"
        android:id="@+id/MessageConversationView_MessageList"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentTop="true"
        android:dividerHeight="2dp"
        android:divider="@null"
        android:stackFromBottom="true"
        android:transcriptMode="alwaysScroll"
        local:MvxBind="ItemsSource Messages" />

</RelativeLayout>

填充列表的结果:

Result

用户输入文字时的结果:

Result2

这也适用于Xamarin。