仿微信 QQ聊天界面,弹出软键盘,listview上移,标题不动

2023-11-02

转载请注明出处:http://blog.csdn.net/ym4189/article/details/79568820

完美解决聊天布局 顶部title固定,底部是EditText,中间是ListView,弹出软键盘,ListView上移,标题不动

1.布局文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/bg_huise"
    android:orientation="vertical">

    <include layout="@layout/xhd_item_actionbar" />
    <!-- 标题栏布局 -->

    <RelativeLayout
        android:id="@+id/relative_parent"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/xhdItem_actionbar"
        android:background="@color/bg_huise"
        android:orientation="vertical">

        <FrameLayout
            android:id="@+id/frame"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_above="@+id/chat_bottom">

            <ListView
                android:id="@+id/rlv_chats"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:cacheColorHint="@color/transparent"
                android:divider="@color/transparent"
                android:dividerHeight="10dp"
                android:fadingEdge="none"
                android:listSelector="@color/transparent"
                android:scrollbars="none"
                android:stackFromBottom="true"
                android:transcriptMode="alwaysScroll" />
        </FrameLayout>

        <LinearLayout
            android:id="@+id/chat_bottom"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:orientation="vertical">

            <View
                android:layout_width="match_parent"
                android:layout_height="0.5dp"
                android:background="@color/new_background" />

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:gravity="center_vertical"
                android:minHeight="50dp">

                <ImageView
                    android:id="@+id/iv_cut"
                    android:layout_width="35dp"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:layout_marginLeft="15dp"
                    android:clickable="true"
                    android:onClick="OnButtonClick"
                    android:scaleType="centerInside"
                    android:src="@drawable/chat_input_icon_voice" />

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_toLeftOf="@+id/img_send"
                    android:layout_toRightOf="@+id/iv_cut"
                    android:gravity="center"
                    android:orientation="vertical"
                    android:padding="5dp">

                    <EditText
                        android:id="@+id/et_common_edit"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:background="@drawable/bg_radius_white_5dp"
                        android:clickable="true"
                        android:hint="请输入内容"
                        android:inputType="textMultiLine"
                        android:maxLines="3"
                        android:minHeight="40dp"
                        android:onClick="OnButtonClick"
                        android:padding="5dp"
                        android:textSize="18sp"
                        android:visibility="visible" />

                </LinearLayout>


                <ImageView
                    android:id="@+id/img_send"
                    android:layout_width="35dp"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_centerVertical="true"
                    android:layout_marginRight="15dp"
                    android:clickable="true"
                    android:onClick="OnButtonClick"
                    android:scaleType="centerInside"
                    android:src="@drawable/chat_input_icon_sent" />
            </RelativeLayout>

        </LinearLayout>
    </RelativeLayout>

</RelativeLayout>

布局还是很简单,顶部是标题栏,中间是listview,底部是输入框。
这里介绍下listview的两个属性:

android:stackFromBottom=”true”

stackFromBottom=”false”: 从上到下依次填充listview

stackFromBottom=”true”: 从下到上一次填充listvew

android:transcriptMode=”alwaysScroll”
transcriptMode
disabled : 默认的,transcriptMode不可用。
normal : 当数据变化,并且,最后一条可见的时候,会自动滚动到底部。
alwaysScroll : 数据变化,就会滚动到底部。

2.在manifet配置Activity的键盘模式

android:windowSoftInputMode="stateHidden|adjustResize"

3.activity不能使用沉浸状态栏
但是,有时候为了美观,必须使用沉浸状态栏时,可以有折中办法,就是单独将状态栏颜色设置为和标题栏颜色相近的颜色。

ps:
对于使用RecyclerView的来说,影响不大,只是要改变下item的显示方式就好,大概就是

linearLayoutManager.setStackFromEnd(true); 

最后聊天多半会有表情框,在表情框和输入法之间切换的问题可以查看另一篇文章:

解决聊天页面输入法和表情面板切换界面闪动问题

好了,以上基本可以满足需求,如有疑问,欢迎多多交流!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仿微信 QQ聊天界面,弹出软键盘,listview上移,标题不动 的相关文章

  • 最新Android WebView Websettings设置, Android WebView加载网页布局错乱, 在Android4.4新版本之后WebSettings新增设置。

    两张图片对比后 你会发现第一张加载web网页的布局乱了 原因 Android4 4 API 版本 19 提供了一个基于 Chromium 版本的新版本 WebView 不再是webkit了 所以在对websettings的设置中我们需要多添
  • Android dip(dp) 与 sp的自适应问题

    转自 http www oschina net question 272860 70761 今天碰到的一个问题 感觉应该其他人也会碰到 拿来分享一下 我们都知道android在开发配置界面时一般都会使用dip和sp这种逻辑长度单位来实现屏幕
  • JS控制 input 输入字符限制

    ENTER键可以让光标移到下一个输入框
  • .Net WinForm 中关于输入法打开却无法输入中文总结

    根据前面的兄弟们解决方法我做了下总结 希望对以后遇到此问题的同行提供点帮助 大家如果还有好的方法也请回复提供我 共同学习 出现这个问题时我的输入法设置为 注意我这里使用简体中文美式键盘 然后我删除了简体中文美式键盘 添加了英语 美国 美式键
  • Android 开发 改变某个Activity的系统字号

    Android系统的字号可以在设置里改变 常常会影响布局效果 如果是个别控件不想被改变大小 使用 dp 而非 sp 作为字体单位即可 转载请注明出处 http blog csdn net u013258802 article details
  • JS调用QQ聊天

    需求 页面上放置QQ图标 点击可以弹出QQ聊天窗口 并与指定QQ号联系 具体 a href http wpa qq com msgrd V 1 amp Uin 123 amp Menu no target blank img src img
  • Ubuntu Linux输入法fcitx方块乱码解决设置

    Ubuntu Linux 10 04自带的输入法不是很好用 linux下的输入法和windows下的比起来还是有很大差距的 相对来说比较好的输入法我看还是fcitx还不 错 不过在Ubuntu下通过 sudo apt get install
  • 我个人认为.NET总有开源的一天

    我已经从事 Net平台的开源工作9年有余 最近跟朋友的聊天让我不禁回望 Net开源的这9年 记得2004年的 Net 1 1在当时是个热门 开源被认为是对微软的巨大威胁 Steve Balmer 也极力反对任何出现的开源 那时候对 NET平
  • CSS滤镜 filter 网站灰色设置

    webkit filter grayscale 100 moz filter grayscale 100 ms filter grayscale 100 o filter grayscale 100 filter grayscale 100
  • 在手机端点击input框不弹出输入法的方法

    1 使用CSS样式 input pointer events none 2 使用事件阻止 input onmousedown function e e preventDefault 这样不仅会阻止键盘 同时 input 会失去光标跟随 如果
  • Ain_电脑所有乱码文字集

    以下是所有电脑上可显示的汉字 谁要是用哪个又通过输入法输不出来 可以从这里找 很简单 就是把int的 19968 至 40869 的数字按字符输出即可 19968 一丁丂七丄丅丆万丈三上下丌不与丏丐丑丒专且丕世丗丘丙业丛东丝丞丟 20000
  • Frameset布局

    原文地址 http captaincook iteye com blog 365634
  • 基于多点通信的PtoP聊天程序

    import java io InputStream import java io OutputStream import java util Hashtable import javax microedition io Connector
  • RecyclerView中item布局的"match_parent"属性失效--LayoutInflate的深入了解

    用recyclerview 给item布局使用了match parent属性 运行后不起作用 查了下 是在onCreateViewHolder中加载布局时候出了问题 一开始用的View Inflate方法 查看源码后 发现View infl
  • GirdLayout布局实现九宫格

    利用GirdLayout布局显示3 3布局的9张图片 每张图片宽度为屏幕的1 3
  • Ubuntu16.04安装搜狗输入法 详细教程

    由于自己也是一个刚入门Ubuntu的新手 对很多终端命令 软件的安装都不大了解 这里记录一下Linux版本的搜狗输入法 一开始觉着有个中文版的系统自带的输入法挺好的 结果没有想到拼音确实不是很好用 就根据这篇教程安装好了Linux版本的搜狗
  • 程序员如何营销自己

    程序员不要只会埋头写代码 还要学会营销自己 否则职业生涯可能会越走月窄 个人总结了一下 可以用以下办法营销自己 1 加入 N 多 QQ 群 在群里发言 最好是发一些有用的信息 如果实在无话可说 也时不时的冒个泡 证明你的存在 时间久了 问候
  • 最新如何在kali linux中安装搜狗输入法

    在安装之前我们先来更新我们的源 更新方法 leafpad etc apt sources list 在打开的文件中输入下面的源 保存退出 阿里云源 deb http mirrors aliyun com kali sana main non
  • MTK多国语言相关经验总结

    MTK多国语言相关经验总结 一 移植多国语言移植多国语言主要牵涉到对mmi features h 整个工程的宏控定义文件 fontres c 字体资源文件 的修改 并添加相应的字库文件 1 语言宏控的修改在mmi features h文件中
  • Qt实战-聊天界面案例

    Qt实战 聊天界面案例 本项目模仿某平台 实现类似的聊天案例 喜欢的朋友可以在此基础上进行添加功能 1 原理 使用udp通信接收本地服务器的消息 ui gt setupUi this 初始化操作 udpSocket new QUdpSock

随机推荐