Android 类似于消息应用的布局
Android layout like Messaging app
我正在尝试创建一个 Android GUI,类似于股票 Android 消息应用程序所使用的 GUI。
- EditText 和 Button 将锚定到视图底部。 EditText 可以扩大和缩小以显示一行或多行文本。 Button 将放置在 EditText 的右侧。
- 一个 MvvmCross MvxListView 将填充剩余的 space。 MvxListView 应该随着 EditText 收缩和增长,或者用户弹出键盘自动调整垂直大小。
我无法想出完全符合我要求的东西。我当前解决方案的问题是硬编码边距。当我输入两行文本时,我最终会得到重叠的视图。有谁知道如何让 MvxListView grow/shrink 填充剩余的 space?
<?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>
如果我没听错的话,你会喜欢下面的内容。注意:我使用 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>
包含填充列表的结果:
用户输入文本时的结果:
这也适用于 Xamarin。
我正在尝试创建一个 Android GUI,类似于股票 Android 消息应用程序所使用的 GUI。
- EditText 和 Button 将锚定到视图底部。 EditText 可以扩大和缩小以显示一行或多行文本。 Button 将放置在 EditText 的右侧。
- 一个 MvvmCross MvxListView 将填充剩余的 space。 MvxListView 应该随着 EditText 收缩和增长,或者用户弹出键盘自动调整垂直大小。
我无法想出完全符合我要求的东西。我当前解决方案的问题是硬编码边距。当我输入两行文本时,我最终会得到重叠的视图。有谁知道如何让 MvxListView grow/shrink 填充剩余的 space?
<?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>
如果我没听错的话,你会喜欢下面的内容。注意:我使用 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>
包含填充列表的结果:
用户输入文本时的结果:
这也适用于 Xamarin。