gpt4 book ai didi

android - 当 ListView 的大小发生变化时,保留 ListView 的最后一个可见项

转载 作者:IT老高 更新时间:2023-10-28 21:49:11 24 4
gpt4 key购买 nike

我想要的很简单,至少我认为它会很简单。我只想要一个 EditText 位于屏幕底部的窗口,而其余空间则由 ListView 填充。不幸的是,它没有按我的预期工作。我想要的是下面的图像。在 XML 中是否有任何简单的方法可以做到这一点,或者我应该为此编写一些特殊的代码? What I want

我有问题的 Android 源代码。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ListView
android:id="@+id/demolist"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
>
</ListView>
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0">
</EditText>
</LinearLayout >

最佳答案

你想要什么

没有键盘的最后一个可见项目

Last Visible Item Without Keyboard

使用键盘的最后一个可见项

Last Visible Item With Keyboard

输入较大的最后一个可见项目

Last Visible Item With larger input

我是这样做的。

总结

  • 在 ListView 中设置 android:stackFromBottom="true"android:transcriptMode="alwaysScroll"
  • 在Activity中设置android:windowSoftInputMode="adjustPan"
  • 在添加新聊天时调用 adapter.notifyDataSetChanged();,以便 ListView 始终滚动到最后一个位置
  • 在 EditText 中设置 android:inputType="textMultiLine" & android:maxLines="4" 以增加文本框

详情

Activity

<activity android:name="MainActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan"></activity>

聊天 View

<RelativeLayout
android:id="@+id/chat_header"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:padding="3dp" >

<Button
android:id="@+id/btnBackChat"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_alignParentLeft="true"
android:background="@drawable/back_button" />

<TextView
android:id="@+id/txt_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/btnBackChat"
android:layout_centerHorizontal="true"
android:textColor="@android:color/white"
android:textSize="18sp" />

<ImageView
android:id="@+id/imgViewProfileChat"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_alignParentRight="true"
/>
</RelativeLayout>

<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/form"
android:layout_below="@+id/chat_header"
android:stackFromBottom="true"
android:transcriptMode="alwaysScroll"/>

<RelativeLayout
android:id="@+id/form"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:orientation="vertical" >

<ImageButton
android:id="@+id/btnAttach"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:contentDescription="@string/attach"
android:src="@drawable/attach_icon" />

<EditText
android:id="@+id/txtChat"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/btnSend"
android:layout_toRightOf="@+id/btnAttach"
android:inputType="textMultiLine"
android:maxLines="4" />

<Button
android:id="@+id/btnSend"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:text="@string/send" />
</RelativeLayout>

关于android - 当 ListView 的大小发生变化时,保留 ListView 的最后一个可见项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9351509/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com